17,377
社区成员
发帖
与我相关
我的任务
分享
试试下面的:
CREATE OR REPLACE TRIGGER WS_WORKSHEET_CHECKED_T
AFTER UPDATE ON WS_WORKSHEET
REFERENCING NEW AS NEW OLD AS OLD
FOR EACH ROW
WHEN (NEW.CHECKED = 'Y')
DECLARE
SHIFTNAME VARCHAR(50);
GROUPNAME VARCHAR(20);
WONO VARCHAR(25);
ACTUALTIME NUMBER;
CURSOR OUTPUT(WSMASTERID NUMBER, ORGID NUMBER) IS
SELECT WO_NO, ACTUAL_TIME
FROM WS_WORKSHEET_OUTPUT
WHERE WS_MASTER_ID = WSMASTERID
AND ORG_ID = ORGID
ORDER BY WO_NO;
BEGIN
SELECT SHIFT_NAME
INTO SHIFTNAME
FROM SH_SHIFTS
WHERE ORG_ID = :NEW.ORG_ID
AND SHIFT_ID = :NEW.SHIFT_ID;
SELECT GROUP_NAME
INTO GROUPNAME
FROM EF_GROUP
WHERE ORG_ID = :NEW.ORG_ID
AND GROUP_ID = :NEW.GROUP_ID;
OPEN CURSOR OUTPUT(:NEW.WS_MASTER_ID, :NEW.ORG_ID);
--WHILE OUTPUT%FOUND LOOP
LOOP
FETCH OUTPUT
INTO WONO, ACTUALTIME;
EXIT WHEN OUTPUT%NOTFOUND;
INSERT INTO WS_WORK_HOURS_INTERFACE
VALUES
(:NEW.WORK_DATE,
SHIFTNAME,
GROUPNAME,
WONO,
ACTUALTIME,
0,
:NEW.WS_MASTER_ID,
:NEW.SHIFT_ID,
:NEW.GROUP_ID);
/* FETCH OUTPUT
INTO WONO, ACTUALTIME;
*/
END LOOP;
CLOSE OUTPUT;
END;
/