Bonjour, avant tout je tiens à dire que j'ai déjà visité les précédents forums qui parlent du sujet mais je n'ai pas réussi à trouver l'erreur.Alors je sollicite juste un peu d'aide pour que mon trigger compile comme il faut.
Voici mon code :
show error :
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41 CREATE OR REPLACE TRIGGER MAJ_INVENTORY AFTER UPDATE OR INSERT ON S_ITEM FOR EACH ROW DECLARE CURSOR C1 IS SELECT * FROM S_INVENTORY WHERE PRODUCT_ID = :NEW.PRODUCT_ID AND WAREHOUSE_ID IN ( SELECT ID FROM S_WAREHOUSE WHERE REGION_ID IN (SELECT DISTINCT REGION_ID FROM S_CUSTOMER)) ORDER BY AMOUNT_IN_STOCK DESC FOR UPDATE OF AMOUNT_IN_STOCK nowait; INVENT C1%ROWTYPE; QUANT NUMBER(9) := :NEW.QUANTITY; temp number; BEGIN OPEN C1; LOOP FETCH C1 INTO INVENT; EXIT WHEN QUANT = 0 OR C1%NOTFOUND; IF (INVENT.AMOUNT_IN_STOCK - QUANT) > INVENT.REORDER_POINT THEN UPDATE S_INVENTORY SET AMOUNT_IN_STOCK = AMOUNT_IN_STOCK - QUANT WHERE CURRENT OF C1; QUANT := 0; ELSIF (INVENT.AMOUNT_IN_STOCK - QUANT) < INVENT.REORDER_POINT AND (INVENT.AMOUNT_IN_STOCK - QUANT) > 0 THEN QUANT := QUANT - INVENT.AMOUNT_IN_STOCK; UPDATE S_INVENTORY SET AMOUNT_IN_STOCK = 0 WHERE CURRENT OF C1; INSERT INTO REAPPRO VALUES(PRODUCT_ID, WAREHOUSE_ID, MAX_IN_STOCK,TO_DATE(SYSDATE,'DD/MM/RR'),NULL); ELSIF QUANT > INVENT.MAX_IN_STOCK THEN QUANT := QUANT - INVENT.AMOUNT_IN_STOCK; UPDATE S_INVENTORY SET AMOUNT_IN_STOCK = 0 WHERE CURRENT OF C1; INSERT INTO REAPPRO VALUES(PRODUCT_ID, WAREHOUSE_ID,MAX_IN_STOCK,TO_DATE(SYSDATE,'DD/MM/RR'),NULL); END IF; END LOOP; IF QUANT > 0 THEN RAISE_APPLICATION_ERROR(-20001,'Commande trop importante => rupture de stock');END IF; END; /
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 LINE/COL ERROR -------- ----------------------------------------------------------------- 25/4 PL/SQL: SQL Statement ignored 25/57 PL/SQL: ORA-00984: Un nom de colonne n'est pas autorisé ici 30/4 PL/SQL: SQL Statement ignored 30/56 PL/SQL: ORA-00984: Un nom de colonne n'est pas autorisé ici
Merci de votre aide !!![]()
Partager