pb trigger avec nested table
J'explique : j'ai une table Commandes composée de différents attributs et d'une collection d'objets (medicaments).
Lorsque que l'on ajoute une commande, je dois mettre a jour le stock dans la table Medics pour chaque medicaments de la collection.
Si le stock du medicament est insuffisant je le signal et je continue avec les medicaments suivant.
J'utilise donc un curseur sur ma nested table :NEW.lgnscom
(je ne suis vraiment pas sur de ca)
et pour chaque ligne je verifie que le stock de medicaments est suffisant (pour l'instant)
J'arrive pas a m'en sortir c prise de tete si quelqu'un de caler en trigger pouvait me donner un coup de pouce ca serait vraiment sympas...
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
|
CREATE OR REPLACE TRIGGER TrigCommande
BEFORE INSERT
ON Commandes
FOR EACH ROW
Declare
TYPE Recordligne IS RECORD
(
idmed CHAR(13),
qte INTEGER
);
ligne Recordligne;
CURSOR c IS
SELECT * from THE(:NEW.lgnscom);
Begin
Open c;
Loop fetch c into ligne;
If (Select stocks from Medics where idmed = ligne.idmed) < ligne.qte) Then
RAISE_APPLICATION_ERROR ( -20010, 'Pb stocks' ) ;
End If;
End Loop;
End;
/ |
Contexte
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
|
CREATE OR REPLACE TYPE t_lgncom IS OBJECT (idmed CHAR(13), qte INTEGER);
CREATE OR REPLACE TYPE col_t_lgncom IS TABLE OF t_lgncom;
CREATE TABLE Commandes
(
idcom CHAR(13) NOT NULL,
idpharma CHAR(13),
datecom DATE,
lgnscom col_t_lgncom,
remisecom NUMBER,
CONSTRAINT pkCommandes PRIMARY KEY (idcom),
CONSTRAINT fkCommandes FOREIGN KEY (idpharma) REFERENCES Pharmas(idpharma)
)
NESTED TABLE lgnscom STORE AS table_lgnscom,
TABLESPACE MEDIC STORAGE (INITIAL 200k NEXT 100k MAXEXTENTS 2); |
Erreurs pour TRIGGER TRIGCOMMANDE:
LINE/COL ERROR
--------------------------------------------------------------------------------
9/18 PLS-00103: Symbole "" rencontré à la place d'un des symboles suivants :[/code]