CREATE OR REPLACE PROCEDURE SP_YF_ZYFYZDFPZSM_ALL ( PCKRQ00 in varchar2 , --出库日期 PCZY000 in number , --操作员 PCZYKS0 in number , --操作员科室 PCOMMIT in varchar2 , --是否提交 PZXCGBZ out number , --执行成功标志 1成功 0失败 PTSXX00 out varchar2 , --执行结果提示信息,成功的情况下也可能有警告信息 PBQBMBH in number default 0 , --病区部门编号 POTHER0 in varchar2 default '' ) -- modification history -- Person Date Comments -- linshu 2025.04.03 create 摆药日期来自动分配拆零医保追溯码; for YF9-20250314-002 -- dsm 2025.04.09 增加入参PBQBMBH for YF-20250410-001 -- dsm 2025.05.15 5.0直接退出,因为发药的时候已经自动扣了,这里再调用很慢 for YF-20250515-003 -- dsm 2025.05.20 增加POTHER0参数 for YF-20250520-004 -- dsm 2025.05.22 注释return for YF-20250521-003 -- dsm 2025.05.30 SP_YF_ZYFYZDFPZSM增加全自动分配入参 for YF-20250529-004 -- huangjy 2025.07.31 增加HZBZ00区分口服针剂 for YF-20250530-002 as Ecustom exception; ls_ANDYBZ varchar2(10); ls_SFQZDP varchar2(10); ls_HZBZ00 varchar2(2); ls_XMLSTR varchar2(300); begin Pzxcgbz := 0; ls_SFQZDP:='1'; -- ls_ANDYBZ:=trim(substrb(SF_SF_GETXMLNOTE('ANDYBZ',POTHER0),1,5)); -- if nvl(ls_ANDYBZ,'0')='0' then -- Pzxcgbz := 1; -- return; -- end if; ls_HZBZ00:=trim(substrb(SF_SF_GETXMLNOTE('HZBZ00',POTHER0),1,2)); ls_XMLSTR:=SF_XT_XMLJSON('HZBZ00',ls_HZBZ00,'0'); for Cur_CKDH in ( select DISTINCT(B.CKDH00) CKDH00 from YF_YZYPSQ A,YF_YPCKD0 B where A.CKDH00 = B.CKDH00 and B.YFBMBH = PCZYKS0 and A.CKDH00 = B.CKDH00 and B.CKLXBH = '03' and (A.CXBZ00 = 'Z' or (A.CXBZ00='+' and A.YPZSL0>A.ZCXSL0)) and B.QRRQ00 = PCKRQ00 and exists ( select 1 from BM_YD0000 X where X.YPNM00 = A.YPNM00 and PZBSM0 is not null) and (A.HZBZ00=ls_HZBZ00 or ls_HZBZ00 is null ) and (A.BQBMBH=PBQBMBH or PBQBMBH=0) ) loop SP_YF_ZYFYZDFPZSM(Cur_CKDH.CKDH00,PCZY000,ls_SFQZDP,'0',ls_XMLSTR); end loop; Pzxcgbz := 1; if pcommit='Y' then commit; end if; exception when no_data_found then raise_application_error(-20001,substrb('没有找到数据!*'||sqlerrm,1,240)); when Ecustom then raise_application_error(-20010,substrb(Ptsxx00||'!*',1,240)); when others then raise_application_error(-20002,substrb(nvl(sqlerrm, '原因不明出错')||'!*',1,240)); end;