Bonjour à tous
J'ai mis au point une procédure stockée qui n'exécute pas normalement je comprend pas
Voici ce que je veux faire :
1 - Prendre une liste de compte
2 - Pour chaque compte :
a - Regrouper le montant par groupe
b - Mettre une valeur "TEST" pour un champ du groupe
Voici ma procédure :
Code sql : 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
42
43
44
45
46 DELIMITER $$ CREATE DEFINER=`root`@`localhost` PROCEDURE `MISE_AJOUR_TOUSLESCOMPTES`(IN `LibExercice` VARCHAR(255), OUT `MONTANT` BIGINT(8)) NO SQL DETERMINISTIC BEGIN DECLARE LibCompte VARCHAR(255); /*DECLARATION DE MON CURSEUR POUR LISTE MES COMPTES*/ DECLARE _curs CURSOR FOR SELECT MONCOMPTE.CODECOMPTE FROM MONCOMPTE WHERE (MONCOMPTE.CODECOMPTE NOT LIKE '%/%') AND (MONCOMPTE.NATURECOMPTE = 'Depenses') AND (MONCOMPTE.TITRECOMPTE = 'Rose') AND (MONCOMPTE.EXERCICECOMPTE = LibExercice); /*OUVERTURE DE MON CURSEUR*/ OPEN _curs; BEGIN DECLARE _fin INTEGER DEFAULT 1; DECLARE CONTINUE HANDLER FOR NOT FOUND SET _fin = 0; FETCH _curs INTO LibCompte; /*SELECTION DU COMPTE EN COURS*/ WHILE (_fin) DO /*POUR LE COMPTE ENCOURS REGROUPEMENT PAR SOMME*/ SELECT SUM(MONCOMPTE.MONTBUGCOURS) INTO COMPTE, MONTANT FROM MONCOMPTE WHERE MONCOMPTE.GROUPECOMPTE=LibCompte; /* MISE A JOUR DE LA VALEUR POUR LE COMPTE ENCOURS */ IF MONTANT = 0 THEN UPDATE MONCOMPTE SET MONCOMPTE.VAL_COMPTE='TEST' WHERE MONCOMPTE.CODECOMPTE=LibCompte ; ELSE UPDATE MONCOMPTE SET MONCOMPTE.VAL_COMPTE='' WHERE MONCOMPTE.CODECOMPTE=LibCompte; END IF ; FETCH _curs INTO LibCompte; END WHILE; END; CLOSE _curs; END$$ DELIMITER ;
Normalement pour tous les comptes ou le montant =0 je dois avoir la valeur "TEST" dans mon champ VAL_COMPTE.
Mais à l'exécution de la procédure je n'ai aucun changement ?
j'ai besoin d'aiguillage
Merci à tous
Partager