Create or replace procedure SP_ZH_CYBRBB_WMZ as v_WMZZFY number(10,2);--无麻醉总费用 v_WMZYPF number(10,2); v_MZF000 number(10,2);--麻醉总费用 v_MZYPF0 number(10,2);--麻醉药品费 cursor c_zyid00 is select zyid00,BZ0000,CYRQ00,zfy000,ypf000 from ZH_CYBRBB where trim(CYRQ00)>='20090101' order by ZYID00;--where BZ0000='0' begin for v_zyid00 in c_zyid00 loop begin select nvl(sum(b.HJJE00),0) into V_WMZZFY from ZY_BRFY00 a, zy_fymx00 b where A.ZYID00=v_zyid00.ZYID00 and A.djh000= B.djh000 and trim(a.CZRQ00) <= trim(v_zyid00.CYRQ00) and not ( B.zxks00='255' or B.kdks00='255') ; exception when others then v_WMZZFY:=0; end; begin select nvl(sum(b.HJJE00),0) into V_WMZYPF from ZY_BRFY00 a,ZY_FYMX00 b where a.DJH000=b.DJH000 and b.XMBH00>=9999999997 and a.ZYID00=v_zyid00.ZYID00 and trim(a.CZRQ00) <= trim(v_zyid00.CYRQ00) and not ( B.zxks00='255' or B.kdks00='255'); exception when others then v_WMZYPF:=0; end; begin V_MZF000 := v_zyid00.zfy000 - V_WMZZFY; exception when others then V_MZF000 :=0; end; begin v_MZYPF0 := v_zyid00.YPF000 - v_WMZYPF; exception when others then v_MZYPF0 :=0; end; update ZH_CYBRBB set WMZZFY=V_WMZZFY,WMZYPF=V_WMZYPF,MZF000=V_MZF000,MZYPF0=v_MZYPF0 where ZYID00=V_zyid00.ZYID00 ; commit; end loop; end;