Is it possible to delcare a cursor in a trigger? The following trigger returns:
SQL0104N An unexpected token "FOR" was found following " ". Expected tokens may include: "<space>". LINE NUMBER=13.
SQLSTATE=42601
CREATE TRIGGER InsertCF_Tgr
AFTER INSERT ON CargoFolder
REFERENCING NEW AS CF_New
FOR EACH ROW MODE DB2SQL
BEGIN ATOMIC
-- declare variables
DECLARE SQLSTATE CHAR(5);
DECLARE Tgr_DeliveryStatus SMALLINT DEFAULT 0;
DECLARE Tgr_Count SMALLINT DEFAULT 0;
-- declare the cursor
DECLARE C1 CURSOR FOR SELECT DeliveryStatus, COUNT(*) FROM CargoMessage WHERE CCN = CF_New.CCN AND Type IN (501,502,504) GROUP BY DeliveryStatus;
-- open the cursor
OPEN C1;
-- Fetch from the cursor until it is empty
FETCH FROM C1 INTO Tgr_DeliveryStatus, Tgr_Count;
WHILE (SQLSTATE = '00000') DO
IF (Tgr_DeliveryStatus = 201)
THEN UPDATE CF_New.CountNew = Tgr_Count;
ELSEIF (Tgr_DeliveryStatus = 202)
THEN UPDATE CF_New.CountSent = Tgr_Count;
ELSEIF (Tgr_DeliveryStatus = 203)
THEN UPDATE CF_New.CountDelivered = Tgr_Count;
ELSEIF(Tgr_DeliveryStatus = 204)
THEN UPDATE CF_New.CountFailed = Tgr_Count;
ENDIF;
FETCH FROM C1 INTO Tgr_DeliveryStatus, Tgr_Count;
END WHILE;
CLOSE C1;
END@