DB2 FOR 游标内部触发器错误
DB2 FOR Cursor Inside Trigger Error
我正在尝试遍历 table 中的 trip_numbers 列表。每当我尝试使用 FOR 循环时,我都会收到以下错误:
错误:在 "cur1" 之后发现意外标记 "CURSOR"。预期标记可能包括:"JOIN "。 SQLSTATE-42601
CREATE TRIGGER SCHEMA.UPDATE_OP_CODE_2
AFTER UPDATE OF USER1 ON TLORDER
REFERENCING NEW AS N
FOR EACH ROW
MODE DB2SQL
BEGIN ATOMIC
DECLARE mTRIP_NUMBER INTEGER; --
FOR v AS cur1 CURSOR FOR (SELECT TRIP_NUMBER FROM ITRIPTLO WHERE
DETAIL_LINE_ID = N.DETAIL_LINE_ID)--
DO
SET mTRIP_NUMBER = cur1.TRIP_NUMBER;
IF (mTRIP_NUMBER IS NOT NULL AND mTRIP_NUMBER != 0) THEN
CALL DF_SAVELEGINTERSECTION(mTRIP_NUMBER, 'True'); --
CALL OPTIMIZE_CARRIER(mTRIP_NUMBER); --
CALL DF_CALCULATETRIPTOTALS(mTRIP_NUMBER, 'True'); --
END IF; --
END FOR;
END
我不能在触发器中使用 FOR Loop/cursor 吗?
删除 "cur1 CURSOR FOR"。 "inlined compound" 触发器不支持此功能。
CREATE TRIGGER SCHEMA.UPDATE_OP_CODE_2
AFTER UPDATE OF USER1 ON TLORDER
REFERENCING NEW AS N
FOR EACH ROW
MODE DB2SQL
BEGIN ATOMIC
DECLARE mTRIP_NUMBER INTEGER; --
FOR v AS (SELECT TRIP_NUMBER FROM ITRIPTLO WHERE DETAIL_LINE_ID = N.DETAIL_LINE_ID)--
DO
SET mTRIP_NUMBER = TRIP_NUMBER;--
IF (mTRIP_NUMBER IS NOT NULL AND mTRIP_NUMBER != 0) THEN
CALL DF_SAVELEGINTERSECTION(mTRIP_NUMBER, 'True'); --
CALL OPTIMIZE_CARRIER(mTRIP_NUMBER); --
CALL DF_CALCULATETRIPTOTALS(mTRIP_NUMBER, 'True'); --
END IF; --
END FOR;--
END
我正在尝试遍历 table 中的 trip_numbers 列表。每当我尝试使用 FOR 循环时,我都会收到以下错误:
错误:在 "cur1" 之后发现意外标记 "CURSOR"。预期标记可能包括:"JOIN "。 SQLSTATE-42601
CREATE TRIGGER SCHEMA.UPDATE_OP_CODE_2
AFTER UPDATE OF USER1 ON TLORDER
REFERENCING NEW AS N
FOR EACH ROW
MODE DB2SQL
BEGIN ATOMIC
DECLARE mTRIP_NUMBER INTEGER; --
FOR v AS cur1 CURSOR FOR (SELECT TRIP_NUMBER FROM ITRIPTLO WHERE
DETAIL_LINE_ID = N.DETAIL_LINE_ID)--
DO
SET mTRIP_NUMBER = cur1.TRIP_NUMBER;
IF (mTRIP_NUMBER IS NOT NULL AND mTRIP_NUMBER != 0) THEN
CALL DF_SAVELEGINTERSECTION(mTRIP_NUMBER, 'True'); --
CALL OPTIMIZE_CARRIER(mTRIP_NUMBER); --
CALL DF_CALCULATETRIPTOTALS(mTRIP_NUMBER, 'True'); --
END IF; --
END FOR;
END
我不能在触发器中使用 FOR Loop/cursor 吗?
删除 "cur1 CURSOR FOR"。 "inlined compound" 触发器不支持此功能。
CREATE TRIGGER SCHEMA.UPDATE_OP_CODE_2
AFTER UPDATE OF USER1 ON TLORDER
REFERENCING NEW AS N
FOR EACH ROW
MODE DB2SQL
BEGIN ATOMIC
DECLARE mTRIP_NUMBER INTEGER; --
FOR v AS (SELECT TRIP_NUMBER FROM ITRIPTLO WHERE DETAIL_LINE_ID = N.DETAIL_LINE_ID)--
DO
SET mTRIP_NUMBER = TRIP_NUMBER;--
IF (mTRIP_NUMBER IS NOT NULL AND mTRIP_NUMBER != 0) THEN
CALL DF_SAVELEGINTERSECTION(mTRIP_NUMBER, 'True'); --
CALL OPTIMIZE_CARRIER(mTRIP_NUMBER); --
CALL DF_CALCULATETRIPTOTALS(mTRIP_NUMBER, 'True'); --
END IF; --
END FOR;--
END