-- Start of DDL Script for Procedure SD_HOSPITAL.SP_YF_GZYPZJHZ -- Generated 2017-05-09 14:29:30 from SD_HOSPITAL@KFYY CREATE OR REPLACE PROCEDURE sp_yf_gzypzjhz( P_YFBMBH IN NUMBER, --输入:药房部门编号 P_QSRQ00 IN VARCHAR2, --起始日期 P_QSSJ00 IN VARCHAR2, --起始时间 P_JSRQ00 IN VARCHAR2, --结束日期 P_JSSJ00 IN VARCHAR2, --结束时间 P_GZYP00 IN VARCHAR2, --贵重药品 P_TJLX00 IN VARCHAR2, --统计类型 P_YPPDPC OUT NUMBER, --批次ID P_LBBH00 in varchar2 default '-1' --药品类别 )AS V_YPPDPC YK_YPPDMX.YPPDPC%TYPE; V_LSJGL0 XT_XTCS00.VALUE0%TYPE; --药房零售价是否独立管理 V_DQRQ00 CHAR(8); V_DQSJ00 CHAR(8); -- MODIFICATION HISTORY -- Person Date Comments -- JETHUA 2003.09.18 创建 -- JETHUA 2004.06.02 增加期初异常判断 -- JETHUA 2004.06.14 列出所有贵重药品 -- JETHUA 2004.06.16 增加参赛判断查询类型 -- JETHUA 2004.09.22 非多价管理,结存数以库存单位保存,故不必换算,多价管理以剂量单位保存,需换算 -- JETHUA 2004.10.26 出入累计不合理,会出现四舍五入错误 -- csf 2008.09.25 优化过程 -- csf 2008.10.14 增加处理药品的金额的 进、销、存 -- laijg 2012.12.20 写入购进金额 期初数、本期增加、本期减少和结存 by YF-20121030-001 -- laijg 2013.05.07 多价格管理情况下,本期减少的数据有问题 by YF-20130506-002 -- csf 2013.08.15 纠正本过程的错误,购进金额的进、销、存数字错误,多价格模式下,金额计算错误 YF-20130812-001 -- chenhn 2016.07.19 增加输入药品类别进行查询 by YF-20160525-001 -- daihq 2016.07.25 修改写入YK_YPPDMX表的取值语句,解决速度慢的问题,修正陈浩南增加入参P_LBBH00的写法 for YF-20160523-001 -- --------- ---------- ------------------------------------------- BEGIN --取出药房零售价是否独立管理参数 JETHUA 2003.09.04 BEGIN SELECT Trim(VALUE0) INTO V_LSJGL0 FROM XT_XTCS00 WHERE NAME00='YF_SFDLSJGL'; EXCEPTION WHEN OTHERS THEN V_LSJGL0:='N'; END; SELECT SQ_YK_YPPD00_YPPDPC.NEXTVAL INTO V_YPPDPC FROM DUAL; --变量赋值 SELECT TO_CHAR(SYSDATE,'YYYYMMDD'),TO_CHAR(SYSDATE,'HH24:MI:SS') INTO V_DQRQ00,V_DQSJ00 FROM DUAL; -- IF V_LSJGL0='N' then--单价格节存金额处理 IF P_GZYP00='0' AND P_TJLX00='Z' THEN --全部 INSERT INTO YK_YPPDMX( YPPDPC , --药品盘点批次-->SQ_YK_YPPD00_YPPDPC YPNM00 , --药品内码 YPBM00 , --药品编码,院内码 YPMC00 , --药品名称 YPGG00 , --规格 PDDW00 , --盘点单位 ZHL000 , PDDJ00 , ZMSL00 , --期初数(数量) GJJ000 , --本期增加(数量) GJPJDJ , --本期减少(数量) PFJ000 , --结存 (数量) SJSL00 , --期初数(金额) SLJE00 , --本期增加(金额) FCJE00 , --本期减少(金额) YKSL00 , --结存 (金额) QCGJJE , --期初数(购进金额) JCGJJE --结存(购进金额) ) SELECT V_YPPDPC, X.YPNM00, D.YPBM00, D.YPMC00, D.YPGG00, D.KCDW00, D.K2J000, x.LSDJ00, ROUND(X.SJKCSL/D.K2J000,3), 0,0,ROUND(X.SJKCSL/D.K2J000,3), ROUND(X.SJKCSL*X.LSDJ00/D.K2J000,2),0,0,ROUND(X.SJKCSL*X.LSDJ00/D.K2J000,2), ROUND(X.SJKCSL*X.GJDJ00/D.K2J000,2),ROUND(X.SJKCSL*X.GJDJ00/D.K2J000,2) FROM BM_YD0000 D,YF_YPKCXX X WHERE X.YFBMBH=P_YFBMBH AND X.YPNM00=D.YPNM00 and ((D.LBBH00=P_LBBH00) or (P_LBBH00='-1')); ELSIF P_GZYP00='1' AND P_TJLX00='Z' THEN --贵重 INSERT INTO YK_YPPDMX( YPPDPC , --药品盘点批次-->SQ_YK_YPPD00_YPPDPC YPNM00 , --药品内码 YPBM00 , --药品编码,院内码 YPMC00 , --药品名称 YPGG00 , --规格 PDDW00 , --盘点单位 ZHL000 , PDDJ00 , ZMSL00 , --期初数(数量) GJJ000 , --本期增加(数量) GJPJDJ , --本期减少(数量) PFJ000 , --结存 (数量) SJSL00 , --期初数(金额) SLJE00 , --本期增加(金额) FCJE00 , --本期减少(金额) YKSL00 , --结存 (金额) QCGJJE , --期初数(购进金额) JCGJJE --结存(购进金额) ) SELECT V_YPPDPC, X.YPNM00, D.YPBM00, D.YPMC00, D.YPGG00, D.KCDW00, D.K2J000, X.LSDJ00, ROUND(X.SJKCSL/D.K2J000,3), 0,0,ROUND(X.SJKCSL/D.K2J000,3), ROUND(X.SJKCSL*X.LSDJ00/D.K2J000,2),0,0,ROUND(X.SJKCSL*X.LSDJ00/D.K2J000,2), ROUND(X.SJKCSL*X.GJDJ00/D.K2J000,2), ROUND(X.SJKCSL*X.GJDJ00/D.K2J000,2) FROM BM_YD0000 D,YF_YPKCXX X WHERE X.YFBMBH=P_YFBMBH AND X.YPNM00=D.YPNM00 AND X.GZDJ00<>'0' and ((D.LBBH00=P_LBBH00) or (P_LBBH00='-1')); ELSIF P_GZYP00='0' AND P_TJLX00<>'Z' THEN --其他 INSERT INTO YK_YPPDMX( YPPDPC , --药品盘点批次-->SQ_YK_YPPD00_YPPDPC YPNM00 , --药品内码 YPBM00 , --药品编码,院内码 YPMC00 , --药品名称 YPGG00 , --规格 PDDW00 , --盘点单位 ZHL000 , PDDJ00 , ZMSL00 , --期初数(数量) GJJ000 , --本期增加(数量) GJPJDJ , --本期减少(数量) PFJ000 , --结存 (数量) SJSL00 , --期初数(金额) SLJE00 , --本期增加(金额) FCJE00 , --本期减少(金额) YKSL00 , --结存 (金额) QCGJJE , --期初数(购进金额) JCGJJE --结存(购进金额) ) SELECT V_YPPDPC, X.YPNM00, D.YPBM00, D.YPMC00, D.YPGG00, D.KCDW00, D.K2J000, X.LSDJ00, ROUND(X.SJKCSL/D.K2J000,3), 0,0,ROUND(X.SJKCSL/D.K2J000,3), ROUND(X.SJKCSL*X.LSDJ00/D.K2J000,2),0,0,ROUND(X.SJKCSL*X.LSDJ00/D.K2J000,2), ROUND(X.SJKCSL*X.GJDJ00/D.K2J000,2),ROUND(X.SJKCSL*X.GJDJ00/D.K2J000,2) FROM BM_YD0000 D,YF_YPKCXX X WHERE X.YFBMBH=P_YFBMBH AND X.YPNM00=D.YPNM00 AND X.LXBH00=P_TJLX00 and ((D.LBBH00=P_LBBH00) or (P_LBBH00='-1')); ELSIF P_GZYP00='1' AND P_TJLX00<>'Z' THEN --交叉 INSERT INTO YK_YPPDMX( YPPDPC , --药品盘点批次-->SQ_YK_YPPD00_YPPDPC YPNM00 , --药品内码 YPBM00 , --药品编码,院内码 YPMC00 , --药品名称 YPGG00 , --规格 PDDW00 , --盘点单位 ZHL000 , PDDJ00 , ZMSL00 , --期初数 GJJ000 , --本期增加 GJPJDJ , --本期减少 PFJ000 , --结存 (数量) SJSL00 , --期初数(金额) SLJE00 , --本期增加(金额) FCJE00 , --本期减少(金额) YKSL00 , --结存 (金额) QCGJJE , --期初数(购进金额) JCGJJE --结存(购进金额) ) SELECT V_YPPDPC, X.YPNM00, D.YPBM00, D.YPMC00, D.YPGG00, D.KCDW00, D.K2J000, 0, ROUND(X.SJKCSL/D.K2J000,3), 0, 0, ROUND(X.SJKCSL/D.K2J000,3), ROUND(X.SJKCSL*X.LSDJ00/D.K2J000,2),0,0,ROUND(X.SJKCSL*X.LSDJ00/D.K2J000,2), ROUND(X.SJKCSL*X.GJDJ00/D.K2J000,2), ROUND(X.SJKCSL*X.GJDJ00/D.K2J000,2) FROM BM_YD0000 D,YF_YPKCXX X WHERE X.YFBMBH=P_YFBMBH AND X.YPNM00=D.YPNM00 AND X.LXBH00=P_TJLX00 AND X.GZDJ00<>'0' and ((D.LBBH00=P_LBBH00) or (P_LBBH00='-1')); END IF; /* ELSE --多价格节存金额处理 IF P_GZYP00='0' AND P_TJLX00='Z' THEN --全部 INSERT INTO YK_YPPDMX( YPPDPC , --药品盘点批次-->SQ_YK_YPPD00_YPPDPC YPNM00 , --药品内码 YPBM00 , --药品编码,院内码 YPMC00 , --药品名称 YPGG00 , --规格 PDDW00 , --盘点单位 ZHL000 , PDDJ00 , ZMSL00 , --期初数(数量) GJJ000 , --本期增加(数量) GJPJDJ , --本期减少(数量) PFJ000 , --结存 (数量) SJSL00 , --期初数(金额) SLJE00 , --本期增加(金额) FCJE00 , --本期减少(金额) YKSL00 , --结存 (金额) QCGJJE , --期初数(购进金额) JCGJJE --结存(购进金额) ) SELECT V_YPPDPC, X.YPNM00, D.YPBM00, D.YPMC00, D.YPGG00, D.KCDW00, D.K2J000, MAX(X.LSDJ00), ROUND(SUM(X.SJKCSL/D.K2J000),3), 0,0,ROUND(SUM(X.SJKCSL/D.K2J000),3), ROUND(SUM(X.SJKCSL*X.LSDJ00/D.K2J000),2),0,0,ROUND(SUM(X.SJKCSL*X.LSDJ00/D.K2J000),2), ROUND(SUM(X.SJKCSL*X.GJDJ00/D.K2J000),2),ROUND(SUM(X.SJKCSL*X.GJDJ00/D.K2J000),2) FROM BM_YD0000 D,YF_YPKCXX X WHERE X.YFBMBH=P_YFBMBH AND X.YPNM00=D.YPNM00 GROUP BY X.YPNM00,D.YPBM00,D.YPMC00,D.YPGG00,D.KCDW00,D.K2J000; ELSIF P_GZYP00='1' AND P_TJLX00='Z' THEN --贵重 INSERT INTO YK_YPPDMX( YPPDPC , --药品盘点批次-->SQ_YK_YPPD00_YPPDPC YPNM00 , --药品内码 YPBM00 , --药品编码,院内码 YPMC00 , --药品名称 YPGG00 , --规格 PDDW00 , --盘点单位 ZHL000 , PDDJ00 , ZMSL00 , --期初数(数量) GJJ000 , --本期增加(数量) GJPJDJ , --本期减少(数量) PFJ000 , --结存 (数量) SJSL00 , --期初数(金额) SLJE00 , --本期增加(金额) FCJE00 , --本期减少(金额) YKSL00 , --结存 (金额) QCGJJE , --期初数(购进金额) JCGJJE --结存(购进金额) ) SELECT V_YPPDPC, X.YPNM00, D.YPBM00, D.YPMC00, D.YPGG00, D.KCDW00, D.K2J000, MAX(X.LSDJ00), ROUND(SUM(X.SJKCSL/D.K2J000),3), 0,0,ROUND(SUM(X.SJKCSL/D.K2J000),3), ROUND(SUM(X.SJKCSL*X.LSDJ00/D.K2J000),2),0,0,ROUND(SUM(X.SJKCSL*X.LSDJ00/D.K2J000),2), ROUND(SUM(X.SJKCSL*X.GJDJ00/D.K2J000),2),ROUND(SUM(X.SJKCSL*X.GJDJ00/D.K2J000),2) FROM BM_YD0000 D,YF_YPKCXX X WHERE X.YFBMBH=P_YFBMBH AND X.YPNM00=D.YPNM00 AND X.GZDJ00<>'0' GROUP BY X.YPNM00,D.YPBM00,D.YPMC00,D.YPGG00,D.KCDW00,D.K2J000; ELSIF P_GZYP00='0' AND P_TJLX00<>'Z' THEN --其他 INSERT INTO YK_YPPDMX( YPPDPC , --药品盘点批次-->SQ_YK_YPPD00_YPPDPC YPNM00 , --药品内码 YPBM00 , --药品编码,院内码 YPMC00 , --药品名称 YPGG00 , --规格 PDDW00 , --盘点单位 ZHL000 , PDDJ00 , ZMSL00 , --期初数(数量) GJJ000 , --本期增加(数量) GJPJDJ , --本期减少(数量) PFJ000 , --结存 (数量) SJSL00 , --期初数(金额) SLJE00 , --本期增加(金额) FCJE00 , --本期减少(金额) YKSL00 , --结存 (金额) QCGJJE , --期初数(购进金额) JCGJJE --结存(购进金额) ) SELECT V_YPPDPC, X.YPNM00, D.YPBM00, D.YPMC00, D.YPGG00, D.KCDW00, D.K2J000, MAX(X.LSDJ00), ROUND(SUM(X.SJKCSL/D.K2J000),3), 0,0,ROUND(SUM(X.SJKCSL/D.K2J000),3), ROUND(SUM(X.SJKCSL*X.LSDJ00/D.K2J000),2),0,0,ROUND(SUM(X.SJKCSL*X.LSDJ00/D.K2J000),2), ROUND(SUM(X.SJKCSL*X.GJDJ00/D.K2J000),2),ROUND(SUM(X.SJKCSL*X.GJDJ00/D.K2J000),2) FROM BM_YD0000 D,YF_YPKCXX X WHERE X.YFBMBH=P_YFBMBH AND X.YPNM00=D.YPNM00 AND X.LXBH00=P_TJLX00 GROUP BY X.YPNM00,D.YPBM00,D.YPMC00,D.YPGG00,D.KCDW00,D.K2J000; ELSIF P_GZYP00='1' AND P_TJLX00<>'Z' THEN --交叉 INSERT INTO YK_YPPDMX( YPPDPC , --药品盘点批次-->SQ_YK_YPPD00_YPPDPC YPNM00 , --药品内码 YPBM00 , --药品编码,院内码 YPMC00 , --药品名称 YPGG00 , --规格 PDDW00 , --盘点单位 ZHL000 , PDDJ00 , ZMSL00 , --期初数(数量) GJJ000 , --本期增加(数量) GJPJDJ , --本期减少(数量) PFJ000 , --结存 (数量) SJSL00 , --期初数(金额) SLJE00 , --本期增加(金额) FCJE00 , --本期减少(金额) YKSL00 , --结存 (金额) QCGJJE , --期初数(购进金额) JCGJJE --结存(购进金额) ) SELECT V_YPPDPC, X.YPNM00, D.YPBM00, D.YPMC00, D.YPGG00, D.KCDW00, D.K2J000, MAX(X.LSDJ00), ROUND(SUM(X.SJKCSL/D.K2J000),3), 0,0,ROUND(SUM(X.SJKCSL/D.K2J000),3), ROUND(SUM(X.SJKCSL*X.LSDJ00/D.K2J000),2),0,0,ROUND(SUM(X.SJKCSL*X.LSDJ00/D.K2J000),2), ROUND(SUM(X.SJKCSL*X.GJDJ00/D.K2J000),2),ROUND(SUM(X.SJKCSL*X.GJDJ00/D.K2J000),2) FROM BM_YD0000 D,YF_YPKCXX X WHERE X.YFBMBH=P_YFBMBH AND X.YPNM00=D.YPNM00 AND X.LXBH00=P_TJLX00 AND X.GZDJ00<>'0' GROUP BY X.YPNM00,D.YPBM00,D.YPMC00,D.YPGG00,D.KCDW00,D.K2J000; END IF; END IF; */ --部分药品隶属被删除了,但统计期间隶属存在并且有入出库记录(当然这部分数据只能针对P_TJLX00='全部' ) if P_GZYP00='0' AND P_TJLX00='Z' then INSERT INTO YK_YPPDMX( YPNM00 , --药品内码 YPPDPC , --药品盘点批次-->SQ_YK_YPPD00_YPPDPC YPBM00 , --药品编码,院内码 YPMC00 , --药品名称 YPGG00 , --规格 PDDW00 , --盘点单位 ZHL000 , PDDJ00 , ZMSL00 , --期初数(数量) GJJ000 , --本期增加(数量) GJPJDJ , --本期减少(数量) PFJ000 , --结存 (数量) SJSL00 , --期初数(金额) SLJE00 , --本期增加(金额) FCJE00 , --本期减少(金额) YKSL00 , --结存 (金额) QCGJJE , --期初数(购进金额) JCGJJE --结存(购进金额) ) SELECT distinct( D.YPNM00), V_YPPDPC , D.YPBM00, D.YPMC00, D.YPGG00, D.KCDW00, D.K2J000, D.LSJ000, 0, 0,0,0, 0,0,0,0, 0,0 --FROM BM_YD0000 D WHERE EXISTS (SELECT 1 FROM YF_YPMXZ0 X --WHERE X.YFBMBH=P_YFBMBH AND X.YPNM00=D.YPNM00 AND X.JZRQ00 >= P_QSRQ00 AND X.JZRQ00<= P_JSRQ00 -- AND X.JZRQ00||X.JZSJ00 >= P_QSRQ00||P_QSSJ00 -- AND X.JZRQ00||X.JZSJ00 <= P_JSRQ00||P_JSSJ00 ) -- and not exists (select 1 from YK_YPPDMX WHERE YPPDPC=V_YPPDPC AND YPNM00=D.YPNM00) and ((D.LBBH00=P_LBBH00) or (P_LBBH00='-1')); FROM BM_YD0000 D,YF_YPMXZ0 E WHERE E.YFBMBH=P_YFBMBH AND E.YPNM00=D.YPNM00 AND E.JZRQ00 >=P_QSRQ00 AND E.JZRQ00<= P_JSRQ00 AND E.JZRQ00||E.JZSJ00 >= P_QSRQ00||P_QSSJ00 AND E.JZRQ00||E.JZSJ00 <= P_JSRQ00||P_JSSJ00 and not exists (select 1 from YK_YPPDMX WHERE YPPDPC=V_YPPDPC AND YPNM00=D.YPNM00) and ((D.LBBH00=P_LBBH00) or (P_LBBH00='-1')); end if; --多价格管理 的期初金额、结存金额、期初购进金额、结存购进金额 再从YF_PCKCMX表进行更新 --多价格管理 的期初金额、结存金额、期初购进金额、结存购进金额 再从YF_PCKCMX表进行更新 if V_LSJGL0='Y' then update YK_YPPDMX x set (SJSL00,--期初金额 YKSL00,--结存金额 QCGJJE,--期初购进金额 JCGJJE--结存购进金额 ) =( SELECT ROUND(SUM(D.SJKCSL*D.LSDJ00/X.ZHL000),2),ROUND(SUM(D.SJKCSL*D.LSDJ00/X.ZHL000),2), ROUND(SUM(D.SJKCSL*D.GJDJ00/X.ZHL000),2),ROUND(SUM(D.SJKCSL*D.GJDJ00/X.ZHL000),2) FROM YF_PCKCMX D WHERE YFBMBH=P_YFBMBH AND YPNM00=X.YPNM00 ) WHERE X.YPPDPC=V_YPPDPC AND EXISTS (SELECT 1 FROM YF_PCKCMX WHERE YFBMBH=P_YFBMBH AND YPNM00=X.YPNM00); end if; --计算结存 库存数字-查询截止时间到当前查询时间的近入库数 if (p_jsrq00<=v_dqrq00) and (p_jsrq00||p_jssj00<=v_dqrq00||v_dqsj00 ) then update YK_YPPDMX x set (x.PFJ000,--结存(数量) x.YKSL00, --结存(金额) X.JCGJJE --结存(购进金额) )=(select NVL(X.ZMSL00,0)+sum(nvl(ROUND(FCSL00*Z.ZHL000/X.ZHL000,3),0))-sum(nvl(ROUND(SLSL00*Z.ZHL000/X.ZHL000,3),0)), nvl(SJSL00,0)+sum(nvl(FCJE00,0))-sum(nvl(SLJE00,0)), nvl(QCGJJE,0)+SUM(ROUND(NVL(GJFCJE,nvl(FCSL00*Z.GJDJ00,0)),2))-SUM(ROUND(NVL(GJSLJE,nvl(SLSL00*Z.GJDJ00,0)),2)) from YF_YPMXZ0 Z where JZRQ00>=P_jsrq00 and JZRQ00<=v_dqrq00 and JZRQ00||jzsj00>=P_jSRQ00||P_jSSJ00 and JZRQ00||JZSJ00<=v_dqrq00||v_dqsj00 and YFBMBH=p_yfbmbh and YPNM00=x.YPNM00 ) where YPPDPC=v_yppdpc and exists (select 1 from YF_YPMXZ0 k where JZRQ00>=P_jsrq00 and JZRQ00<=v_dqrq00 and JZRQ00||JZSJ00>=P_jSRQ00||P_jSSJ00 and JZRQ00||JZSJ00<=v_dqrq00||v_dqsj00 and YFBMBH=p_yfbmbh and k.YPNM00=x.YPNM00); end if; --非多价管理,结存数以库存单位保存,故不必换算 /* IF V_LSJGL0='N' THEN UPDATE YK_YPPDMX X SET X.ZMSL00=(SELECT NVL(JCSL00,0) FROM YF_YPMXZ0 WHERE MXZLSH IN (SELECT MAX(Z.MXZLSH) FROM YF_YPMXZ0 Z WHERE Z.JZRQ00<= P_QSRQ00 AND Z.JZRQ00||Z.JZSJ00 <= P_QSRQ00||P_QSSJ00 AND Z.YFBMBH=P_YFBMBH AND Z.YPNM00=X.YPNM00)) WHERE X.YPPDPC=V_YPPDPC; ELSE UPDATE YK_YPPDMX X SET X.ZMSL00=(SELECT NVL(ROUND(Z.JCSL00/D.K2J000,3),0) FROM YF_YPMXZ0 Z,BM_YD0000 D WHERE Z.YPNM00=D.YPNM00 AND Z.MXZLSH IN (SELECT MAX(Z.MXZLSH) FROM YF_YPMXZ0 Z WHERE Z.JZRQ00<= P_QSRQ00 AND Z.JZRQ00||Z.JZSJ00 <= P_QSRQ00||P_QSSJ00 AND Z.YFBMBH=P_YFBMBH AND Z.YPNM00=X.YPNM00)) WHERE X.YPPDPC=V_YPPDPC; END IF; */ --计算增减 UPDATE YK_YPPDMX X SET (X.GJJ000,X.GJPJDJ, X.SLJE00,X.FCJE00,X.ZJGJJE,X.JSGJJE)=(SELECT SUM(ROUND(NVL(Z.SLSL00,0)*Z.ZHL000/x.ZHL000,3)), SUM(ROUND(NVL(Z.FCSL00,0)*Z.ZHL000/x.zhl000,3)), SUM(ROUND(NVL(Z.SLJE00,0),2)), SUM(ROUND(NVL(Z.FCJE00,0),2)), SUM(ROUND(NVL(Z.GJSLJE,nvl(SLSL00*Z.GJDJ00,0)),2)), SUM(ROUND(NVL(Z.GJFCJE,nvl(FCSL00*Z.GJDJ00,0)),2)) FROM YF_YPMXZ0 Z WHERE Z.YFBMBH=P_YFBMBH AND Z.YPNM00=X.YPNM00 AND JZRQ00 >= P_QSRQ00 AND JZRQ00<= P_JSRQ00 AND JZRQ00||JZSJ00 >= P_QSRQ00||P_QSSJ00 AND JZRQ00||JZSJ00 <= P_JSRQ00||P_JSSJ00 ) WHERE X.YPPDPC=V_YPPDPC and exists ( select 1 from YF_YPMXZ0 K WHERE K.YFBMBH=P_YFBMBH AND JZRQ00 >= P_QSRQ00 AND JZRQ00<= P_JSRQ00 AND JZRQ00||JZSJ00 >= P_QSRQ00||P_QSSJ00 AND JZRQ00||JZSJ00 <= P_JSRQ00||P_JSSJ00 AND K.YPNM00=X.YPNM00); --计算期初 UPDATE YK_YPPDMX SET PFJ000=NVL(PFJ000,0), ZMSL00=NVL(PFJ000,0)+NVL(GJPJDJ,0)-NVL(GJJ000,0), GJJ000=NVL(GJJ000,0), GJPJDJ=NVL(GJPJDJ,0), YKSL00=NVL(YKSL00,0), SJSL00=NVL(YKSL00,0)+NVL(FCJE00,0)-NVL(SLJE00,0), FCJE00=NVL(FCJE00,0), SLJE00=NVL(SLJE00,0), QCGJJE=NVL(JCGJJE,0)+NVL(JSGJJE,0)-NVL(ZJGJJE,0) WHERE YPPDPC=V_YPPDPC; P_YPPDPC:=V_YPPDPC; COMMIT; EXCEPTION WHEN OTHERS THEN RAISE_APPLICATION_ERROR(-20009, '查询数据时发生意外错误!*返回信息:'|| '调用过程: SP_YF_GZYPZJHZ('||TO_CHAR(P_YFBMBH)||','||P_QSRQ00||','||P_QSSJ00||','|| P_JSRQ00||','||P_JSSJ00||','||P_GZYP00||','||P_TJLX00||') ; '||SQLERRM); ROLLBACK; END; / -- End of DDL Script for Procedure SD_HOSPITAL.SP_YF_GZYPZJHZ