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...
Contexte
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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; /
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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]
Partager