Déclaration d'un élément de modèle de trigger dans une définition de trigger

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.

Vous pouvez utiliser les syntaxes suivantes pour déclarer un élément de modèle de trigger :
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