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 ?