salut,
Je m'entraine à l'utilisation de trigger;
donc j'ai essayer d'en faire un
Code :
- create or replace trigger trigtd
- before insert or update on client
- for each row
- declare
- c client.numcl%type;
- nom_conjoint client.nom%type;
- pbcp exception;
- pbconjoint1 exception;
- pbconjoint2 exception;
- begin
- if :new.cp not in ('01','07','26','38','42','69','73','74') then
- raise pbcp;
- end if;
- if :new.numconjoint is not null then
- select count(*) into c from client where numcl= :new.numconjoint;
- if c=0 then
- raise pbconjoint1;
- end if;
- select nom from client where numcl= :new.numconjoint;
- if nom_conjoint<>:new.nom then
- raise pbconjoint2;
- end if;
- end if;
- exception
- when pbcp then raise_application_error(-20501,'pas de la region');
- when pbcp then raise_application_error(-20502,'pas de numclient');
- when pbcp then raise_application_error(-20503,'nom du conjoint different');
- end;
- /
|
mais j'obtiens l'erreur suivante:
Citation :
0/0 PL/SQL: Compilation unit analysis terminated
21/1 PLS-00428: une clause INTO est attendue dans cette instruction
SELECT
31/1 PLS-00483: l'exception 'PBCP' peut apparaître dans au plus un
module d'exception de ce bloc
|
et je ne vois pas d'ou cela peut venir, je recupere bien le nombre de ligne de ma table avec le into c .
Mais je pije pas pourquoi sa bloque dessus;
Merci.
Message édité par donny3 le 03-04-2006 à 14:40:43