create or replace procedure sp_bq_jycjqr(as_FLAG00 in char, ad_YJDJH0 in number, ad_CZY000 in number, ad_CJDH00 in number default 0, --采集单号 ad_CJRY00 in number --采集人员 ) as YJROW YJ_YW0000%rowtype; Verrmsg varchar2(200); --Verrmsg varchar2(200); Vjydzjsf CHAR(1); --检验单直接收费 Vbqjydtxm CHAR(1); --检验单产生条形码 Ecustom exception ;--错误变量 Vcounter number(5); -- MODIFICATION HISTORY -- Person Date Comments -- dsm 2013.04.28 create for BQ-20130416-002 -- dsm 2015.12.04 TXM000写入数据 for BQ-20151203-001 -- dsm 2016.05.19 as_FLAG00不管等于多少YJ_JYBBCY都要写 for BQ-20160329-001 -- dsm 2018.07.05 条形码生成完后再做个校验 for YJ-20180705-001 -- dsm 2018.12.22 增加ad_CJDH00 BQ-20181112-001 -- yanghq 2019.09.18 修改YJ_YW0000表用来触发触发器TR_YJ_YW0000_JCPT省二 for BQ-20190918-001 -- caobin 2022.03.31 增加 ad_CJRY00 BQ(SE)-20220324-001 begin begin--执行非药医嘱时,检验单直接收费,省二 select substrb(Upper(VALUE0),1,1) into Vjydzjsf from XT_XTCS00 where NAME00='BQ_YZZX_JYDZJSF'; exception when OTHERS then Vjydzjsf:='N'; end; begin--检验单产生条形码,省二 select substrb(Upper(VALUE0),1,1) into Vbqjydtxm from XT_XTCS00 where NAME00='BQ_YZZX_JYDTXM'; exception when OTHERS then Vbqjydtxm:='N'; end; if as_FLAG00='1' then update JY_YW0000 set BBCJR0=ad_CZY000, BBCYRQ=to_char(sysdate,'YYYYMMDD'), BBCYSJ=to_char(sysdate,'HH24:MI:SS') where YJDJH0=ad_YJDJH0; end if; --此表都写,否则如果用本公司检验的就用不了此功能 insert into YJ_JYBBCY(YJDJH0,ZYGHID,ZYHGHH,MZZYBZ,BRID00,BRXM00,XB0000,YBH000,SQRQ00,SQSJ00,SQKS00,SQYS00,BBCJR0,BBCYRQ,BBCYSJ,TXM000,CJDH00,CJRY00) select YJDJH0,ZYGHID,ZYHGHH,MZZYBZ,BRID00,BRXM00,XB0000,'0',KDRQ00,KDSJ00,KDKSBH,KDYS00, ad_CZY000 ,to_char(sysdate,'YYYYMMDD'),to_char(sysdate,'HH24:MI:SS'),TXM000,ad_CJDH00,ad_CJRY00 from YJ_YW0000 where YJDJH0=ad_YJDJH0; select * into YJROW from YJ_YW0000 where YJDJH0=ad_YJDJH0; if Vjydzjsf='M' then SF_YJ_YWSF_NOCOMMIT(ad_YJDJH0,YJROW.YJKSBH,ad_CZY000,Verrmsg,Verrmsg); end if; if Vbqjydtxm='Y' then SP_BQ_JYDTXM_DJH000(ad_CZY000,YJROW.ZYGHID,ad_YJDJH0); select count(distinct BRID00) into Vcounter from YJ_YW0000 where TXM000 in(select TXM000 from YJ_YW0000 b,BM_ZLZD00 c where ZYGHID=YJROW.ZYGHID and nvl(b.TXM000,' ')<>'*' and b.MZZYBZ='1' and b.ZLXMID=c.ZLXMID and c.LBBH00=4); if Vcounter>1 then Verrmsg:='检验条形码生成异常(重复),请重试!'; raise Ecustom; end if; end if; update YJ_YW0000 set BZ0000=trim(BZ0000)||' ' where YJDJH0=ad_YJDJH0; exception when Ecustom then raise_application_error(-20002,substrb(nvl(Verrmsg,'错误:')||'!*',1,220)); when others then raise_application_error(-20002,substrb(nvl(sqlerrm||Verrmsg||':'||YJROW.YJKSBH, '原因不明出错')||'!*',1,220)); end; /