problème trigger [oracle/pl/sql] - SQL/NoSQL - Programmation
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 ?
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)
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 :
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