[oracle/pl/sql] problème trigger

problème trigger [oracle/pl/sql] - SQL/NoSQL - Programmation

Marsh Posté le 20-12-2005 à 14:04:36    

Bonjour à tous
Je voudrais creer un trigger mais je n'y arrive pas, j'ai une erreur :(
 
Voici mon trigger :

Citation :

create or replace trigger annulation
after delete on commandes
for each row
declare
     cursor c is select * from :old.lgnscom;
     m c%rowtype;
begin
     open c;
     loop
          fetch c into m;
          exit when c%notfound;
          update medics set stock=stock+m.qte when m.idmed=idmed;
     end loop;
     close c;
end;
/


 
Dans ma table commandes, il y a une nested table (lgnscom) qui regroupa la liste des medicaments et la quantité (idmed et qte)
Dans la table medics, il y a un idmed et un stock
 
Mon trigger doit mettre a jour les stock dans la table medics a chaque suppression d'une commande dans la table commandes
 
Quand je compile mon trigger ça me met :
Déclancheur creer avec erreur de compilation
 
L'erreur est la PLS-00103 à la ligne 2, hors je ne vois pas d'erreur e la ligne 2
Symbole "" rencontré à la place d'un des symboles suivant:
<an identifier> <a double-quoted delimited-identifier>


Message édité par Zeurkk le 20-12-2005 à 14:14:19
Reply

Marsh Posté le 20-12-2005 à 14:04:36   

Reply

Marsh Posté le 20-12-2005 à 14:13:44    

je pense en fait que l'erreur viens du select que je fait sur :old.lgnscom
 
on ne peut pas utiliser de :old et :new dans la section declare ?
on ne peut pas parcourir un nested table comme cela ?


Message édité par Zeurkk le 20-12-2005 à 14:14:05
Reply

Marsh Posté le 29-12-2005 à 14:04:25    

héhé :p
 
j'ai eu le meme pb que toi
on ne peut pas acceder à :old dans declare
 
mais les NESTED TABLES sont indicées par des variables numériques et peuvent être lues et écrites directement depuis les colonnes d'une table
 
SQL> declare
  2    -- collection de type nested table
  3    TYPE TYP_NES_TAB is table of varchar2(100) ;
  4    -- collection de type index by  
  5    TYPE TYP_IND_TAB is table of number index by binary_integer ;
  6    tab1 TYP_NES_TAB ;
  7    tab2 TYP_IND_TAB ;
  8  Begin
  9    tab1 := TYP_NES_TAB('Lundi','Mardi','Mercredi','Jeudi' ) ;
 10    for i in 1..10 loop
 11       tab2(i):= i ;
 12    end loop ;
 13  End;
 14  /
 
Procédure PL/SQL terminée avec succès.
 
(tiré de developpez.com)


Message édité par vlad' le 29-12-2005 à 14:04:42
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed