Bonjour à tous et à toutes.
Je débute en procédures stockées.
J'ai suivi quelques articles présents sur ce site. (Merci aux auteurs).
Bon, pour en venir à mon problème:
J'ai une table (semaine) qui contient 7 clés étrangères (lundi, mardi...) vers la même table (jour).
Parfois certains champs sont NULL (aucun jour associé).
Je veux écrire une procédure à qui on passe un id de semaine et qui efface tous les jours associés.
Elle se présente comme suit :
Le problème c'est que j'entre jamais dans les if du style RP_lundi <> NULL ! Même si le RP_lundi a bien une valeur (un select rp_lundi avant le if me renvoi bien un champ. Donc ça passe pas le if.
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 DELIMITER // DROP PROCEDURE IF EXISTS DEL_Semaine// CREATE PROCEDURE DEL_Semaine (RP_idSemaine int) BEGIN DECLARE RP_lundi,RP_mardi,RP_mercredi INT default NULL; DECLARE intrvbl INT default 0; DECLARE cur_sem CURSOR FOR SELECT lundi,mardi,mercredi FROM semaine WHERE idSemaine = RP_idSemaine; DECLARE CONTINUE handler FOR NOT FOUND SET intrvbl = 1; OPEN cur_sem; FETCH cur_sem into RP_lundi, RP_mardi, RP_mercredi; IF intrvbl = 0 THEN IF RP_lundi <> NULL THEN DELETE FROM jour WHERE idjour = RP_lundi; END IF; if RP_mardi <> NULL THEN DELETE FROM jour WHERE idjour = RP_mardi; END IF; if RP_mercredi <> NULL THEN DELETE FROM jour WHERE idjour = RP_mercredi; END IF; END IF; CLOSE cur_sem; END// DELIMITER ;
C'est sûrement très bête mais je suis coincé là.
Merci de m'aider.
--
Hpar
Partager