Certains SGBD requièrent que le curseur et les variables soient déclarés pour chaque élément avant que le nom de l'élément de modèle n'apparaisse dans le script. Cette déclaration peut prendre la forme d'une instruction qui appelle la procédure correspondante.
Decl nom d'élément de modèle de trigger
Par exemple, la définition de trigger suivante contient l'instruction .DeclInsertChildParentExist qui déclare l'élément de modèle de trigger .InsertChildParentExist :
-- Before insert trigger "[%QUALIFIER%]%TRIGGER%" for table "[%QUALIFIER%]%TABLE%" create trigger [%QUALIFIER%]%TRIGGER% before insert on [%QUALIFIER%]%TABLE% for each row declare integrity_error exception; errno integer; errmsg char(200); dummy integer; found boolean; .DeclInsertChildParentExist begin .InsertChildParentExist -- Errors handling exception when integrity_error then raise_application_error(errno, errmsg); end; /
Dans un script de trigger généré, .DeclInsertChildExist correspond à la définition suivante :
.FOREACH_PARENT() -- Declaration of InsertChildParentExist constraint for the parent "[%PQUALIFIER%]%PARENT%" .DEFINE "CURSOR" "cpk%REFNO%_%.25L:TABLE%" cursor %CURSOR%(.JOIN("var_%.L26:FK% %.L:COLTYPE%", "", ",", ") is") select 1 from [%PQUALIFIER%]%PARENT% where .JOIN("%PK% = var_%.L26:FK%", "and ") and .JOIN("var_%.L26:FK% is not null", "and ", "", ";") .ENDFOR