Bonjour,
J'ai fais une procédure PL/SQL qui permet de faire la mise à jour d'une table COMMANDE en faisant une remise sur les montants de certaines commandes .
Le problème c'est que la procédure qui s'exécute sans erreurs ne m'affiche pas le résultat désiré , en fait lorsque j'affiche ma table je trouve que au lieu de faire une remise sur le montant elle remplace ce montant par un vide (probablement NULL), Voici mon code
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 PROCEDURE RemiseCommande IS CURSOR mnt_cr IS SELECT NUM_C ,MATRICULE, DATE_C ,MONTANT FROM COMMANDE WHERE NUM_C IN (1,3); cmd COMMANDE %rowtype; mnt_cmd real; n number(2); commandevide EXCEPTION; BEGIN SELECT COUNT(*) INTO n FROM COMMANDE; IF n=0 THEN RAISE commandevide; END IF; FOR cmd IN mnt_cr LOOP mnt_cmd:=cmd.MONTANT; IF cmd.NUM_C=1 then mnt_cmd:=0.7*mnt_cmd; ELSE mnt_cmd:=0.25*mnt_cmd; END IF; UPDATE COMMANDE SET MONTANT=cmd.MONTANT-mnt_cmd WHERE (NUM_C =cmd.NUM_C); END LOOP; EXCEPTION WHEN commandevide THEN RAISE_APPLICATION_ERROR(-20501,'Pas de commande !'); END; / execute RemiseCommande;
Quelqu'un pourra il m'aider ?
Partager