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 la syntaxe suivante pour déclarer un élément de modèle de trigger :
.Declom d'élément de modèle de trigger
Par exemple, la définition de trigger suivante pour Oracle 8 contient l'instruction .DeclInsertChildParentExist qui déclare d'é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