Problème avec les délimiteurs dans un trigger
Bonjour à tous.
Voilà le trigger que j'ai mis dans un fichier :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| CREATE TRIGGER LISTE_MODULES_OBL
AFTER INSERT ON CONTRATS
REFERENCING NEW AS N
FOR EACH ROW
BEGIN
FOR RES AS
SELECT ID_MODULE
FROM FORMATIONS_MODULES
WHERE ID_FORMATION = N.ID_FORMATION
AND TYPE_MODULE = 1
DO
INSERT INTO CONTRATS_MODULES
(ID_MODULE, ID_CONTRAT)
VALUES (RES.ID_MODULE, N.ID_CONTRAT);
END FOR;
END |
Et voilà les erreurs que je me prends lorsque j'importe le fichier (db2 -tf "TRIGGERS.SQL") :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| DB21034E La commande a été traitée comme une instruction SQL car il ne s'agit
pas d'une commande valide pour l'interpréteur de commandes. Le message SQL
suivant a été renvoyé lors de son traitement :
SQL0104N Une marque inattendue "RES" figure à la suite de "BEGIN FOR".
Parmi les marques attendues, on trouve : "JOIN". LINE NUMBER=6.
SQLSTATE=42601
DB21034E La commande a été traitée comme une instruction SQL car il ne s'agit
pas d'une commande valide pour l'interpréteur de commandes. Le message SQL
suivant a été renvoyé lors de son traitement :
SQL0104N Une marque inattendue "END-OF-STATEMENT" figure à la suite de "END
FOR". Parmi les marques attendues, on trouve : "JOIN <joined_table>".
SQLSTATE=42601
DB21034E La commande a été traitée comme une instruction SQL car il ne s'agit
pas d'une commande valide pour l'interpréteur de commandes. Le message SQL
suivant a été renvoyé lors de son traitement :
SQL0104N Une marque inattendue "END-OF-STATEMENT" figure à la suite de "END
TERMINATE". Parmi les marques attendues, on trouve : "JOIN <joined_table>".
SQLSTATE=42601 |
J'ai installé le DB2 Express-C gratuit pour Windows. J'ai d'autres triggers avec lesquels j'ai eu des problèmes : en fait dès que je mets autre chose que WHEN (....) SQLSTATE '....' (.....); (par exemple si je place tout dans un bloc BEGIN ... END) j'ai des erreurs du type celles ci-dessus.
Edit : je précise que j'ai fait un copier/coller d'un trigger par défaut de DB2 (POLICY_DR je crois) que j'ai ensuite importé et j'ai des erreurs du même type ; il doit certainement y avoir un truc qui m'échappe.
Pouvez-vous m'aider SVP ?