CREATE OR REPLACE TRIGGER TR_YF_MZCF00_AFINSUPD_FYJ AFTER INSERT OR DELETE OR UPDATE OF CFZT00 ON SD_YF.YF_MZCF00 REFERENCING OLD AS OLD NEW AS NEW FOR EACH ROW DECLARE V_SFKQBYJFY XT_XTCS00.VALUE0%TYPE; V_TEMP00 NUMBER(20, 4); V_EXIST0 CHAR(1); CURSOR C_MZCFMX IS SELECT NVL(B.YFBMBH, '0') PHARMACY, A.CFLSH0 ORDER_NO, '0' DOSAGE_COUNT, NVL(B.BRID00, '0') PATIENT_ID, NVL(B.BRXM00, '0') PATIENT_NAME, NVL(B.DYRQ00, '0') CHARGE_DATE, NVL(B.FYCKBH, '0') WINDOW_NO, '0' PRESC_CLASS, NVL(B.FYDLXH, '0') LINE_NO, NVL(B.FYR000, '') OPERATER, SYSDATE INSERT_TIME, '0' FLAG FROM YF_MZCFMX A, YF_CFDL00 B WHERE A.CFLSH0 = B.CFLSH0(+) AND A.CFLSH0 = :NEW.CFLSH0 AND EXISTS (SELECT 1 FROM YF_MZCF00 C WHERE C.CFLSH0 = A.CFLSH0 AND C.YPDLBH IN ('0', '1')) AND ROWNUM = 1; V_MZCFMX C_MZCFMX%ROWTYPE; V_STATE VARCHAR2(2); V_CHARGEDATE DATE; V_CFZJE0 VARCHAR2(20); PRAGMA AUTONOMOUS_TRANSACTION; -- V_errmsg varchar2(255); --错误提示变量 --E_custom exception; --错误变量 -- MODIFICATION HISTORY -- Person Date Comments -- huangjy 2018.09.04 create by YFPY-20180911-001 -- huangjy 2018.12.06 修正处方处理 for YFPY-20181130-001 -- huangjy 2019.01.21 归档YFPY-20190116-001 -- xgm 2020.06.08 归档YF-20200608-001 -- --------- ---------- ------------------------------------------- BEGIN -- V_errmsg:=''; BEGIN SELECT TRIM(VALUE0) INTO V_SFKQBYJFY FROM XT_XTCS00 WHERE NAME00 = 'MZPY_SFKQBYJFY'; EXCEPTION WHEN OTHERS THEN V_SFKQBYJFY := 'N'; END; IF V_SFKQBYJFY = 'Y' THEN IF :NEW.CFZT00 <> '0' THEN BEGIN SELECT DECODE(:NEW.CFZT00, '1', '1', '2', '4', '3', '2', '4', '3', '5', '2', '6', '2'), TO_CHAR(:NEW.CFZJE0, 'fm99999990.099'), TO_DATE(SUBSTR(:NEW.JZRQ00, 1, 4) || '/' || SUBSTR(:NEW.JZRQ00, 5, 2) || '/' || SUBSTR(:NEW.JZRQ00, 7, 2) || ' ' || :NEW.JZSJ00, 'YYYY/MM/DD HH24:MI:SS') INTO V_STATE, V_CFZJE0, V_CHARGEDATE FROM DUAL; EXCEPTION WHEN OTHERS THEN V_STATE := '0'; V_CFZJE0 := '0.00'; V_CHARGEDATE := SYSDATE; END; OPEN C_MZCFMX; FETCH C_MZCFMX INTO V_MZCFMX; WHILE C_MZCFMX%FOUND LOOP INSERT INTO HKC_ORDER_STATE (ID, PHARMACY, ORDER_NO, DOSAGE_COUNT, SUM_PRICE, PATIENT_ID, PATIENT_NAME, CHARGE_DATE, STATE, WINDOW_NO, PRESC_CLASS, LINE_NO, OPERATER, INSERT_TIME, FLAG) VALUES (SQ_HKC_ORDER_STATE_ID.NEXTVAL, V_MZCFMX.PHARMACY, TRIM(V_MZCFMX.ORDER_NO), V_MZCFMX.DOSAGE_COUNT, V_CFZJE0, V_MZCFMX.PATIENT_ID, V_MZCFMX.PATIENT_NAME, V_CHARGEDATE, V_STATE, V_MZCFMX.WINDOW_NO, V_MZCFMX.PRESC_CLASS, V_MZCFMX.LINE_NO, V_MZCFMX.OPERATER, V_MZCFMX.INSERT_TIME, V_MZCFMX.FLAG); FETCH C_MZCFMX INTO V_MZCFMX; END LOOP; CLOSE C_MZCFMX; END IF; END IF; COMMIT; EXCEPTION WHEN NO_DATA_FOUND THEN RAISE_APPLICATION_ERROR(-20001, SUBSTRB('数据没有找到!*' || SQLERRM || ',', 1, 120)); WHEN OTHERS THEN RAISE_APPLICATION_ERROR(-20266, SUBSTRB(NVL(SQLERRM, '原因不明出错') || '!*', 1, 120)); END; /