CREATE OR REPLACE PROCEDURE SP_ZS_BAZKSC2( V_ZYID00 in number, --住院ID V_GZLX00 in char --0:中西首页限制 1:西医首页限制 2:中医首页限制 3:中西首页提醒 4:西医首页提醒 5:中医首页提醒 ' ) AS -- MODIFICATION HISTORY -- Person Date Comments -- xuexc 2021.03.12 参考住院SP_ZS_BAZKSC,病案室逻辑校验表 BAGL-20210203-002 SJSCRQ_TEMP date; --数据生成时间 LS_RQ0000 char(8); exceSql varchar2(4000); l_cnt number(8); cursor CUR_BLZKGZ IS select * from BA_BASYGZ a where ZT0000='1' and (GZLX00='0'or GZLX00=V_GZLX00); T_CURSOR CUR_BLZKGZ%rowtype; begin delete from BA_BASYTX where ZYID00=V_ZYID00; for T_CURSOR in CUR_BLZKGZ loop begin -- exceSql :='INSERT INTO BA_BASYTX(ZYID00,ZKNR00) select k.ZYID00,:ZKNR00 from zy_brxxb0 k '; exceSql :='INSERT INTO BA_BASYTX(ZYID00,ZKNR00) select k.ZYID00,('||replace(T_CURSOR.GZSQL0,':zyid00','k.zyid00') ||' and rownum=1)||:ZKNR00 from zy_brxxb0 k '; exceSql := exceSql || ' where exists ('||replace(T_CURSOR.GZSQL0,':zyid00','k.zyid00') ||') and k.ZYID00=:ZYID00'; exceSql := replace(exceSql,':zyid00','k.zyid00'); exceSql := replace(exceSql,':zyid00','k.zyid00'); execute immediate excesql using T_CURSOR.TSNR00,V_ZYID00; exception when others then l_cnt:=0; end; end loop; -- update BA_BRZYXX a set BRNL00=trunc(months_between(to_date(a.RYRQ00,'yyyymmddhh'),to_date(a.BRCSRQ,'yyyymmddhh')) / 12) --where LSH000 = V_ZYID00; commit; -- update BA_BASYTX set ZKNR00=replace(ZKNR00,'1','') where zyid00=V_ZYID00; update ZS_BASYTX set ZKNR00=substr(zknr00,2) where zyid00=V_ZYID00 and substr(ZKNR00,0,1)='1'; commit; exception when others then raise_application_error(-20204, trim(substrb('生成数据时发生意外错误!*返回信息:'|| '调用过程: gendata_zs_zkjl00; '||sqlerrm,1,200))); rollback; end;