Précédent   Forum des professionnels en informatique > Bases de données > MySQL > SQL Procédural
SQL Procédural Forum d'entraide sur les triggers, les procédures stockées et les fonctions en MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 12/07/2011, 18h01   #1
Membre régulier
 
Avatar de magicbisous-nours
 
Inscription : octobre 2005
Messages : 201
Détails du profil
Informations forums :
Inscription : octobre 2005
Messages : 201
Points : 82
Points : 82
Envoyer un message via MSN à magicbisous-nours
Par défaut Curseur qui ne fait qu'une seule itération

Bonjour,
j'ai besoin de parcourir une table et pour chaque enregistrement dans cette table j'ai besoin de créer dix lignes dans une autre table.
Pour l'instant j'ai fait ça :
Code :
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
BEGIN
 
  declare vChild INTEGER;
 
  declare cpt INTEGER;
 
  declare done integer DEFAULT 0;
 
  declare vCursor cursor FOR SELECT id_child FROM t_child;
 
  declare continue handler FOR sqlstate '02000' SET done = 1;
 
 
 
  open vCursor;
 
  repeat
 
    fetch vCursor INTO vChild;
 
    IF NOT done then
 
	SET cpt = 1;
 
	while (cpt < 10) DO
 
	  INSERT INTO r_child_supporting_document(id_child, id_supporting_document, is_checked) VALUES(vChild, cpt, 0);
 
	  SET cpt = cpt + 1;
 
	end while;
 
    end IF;
 
  until NOT done end repeat;
 
end
Mon problème est que mon code ne passe qu'une fois dans le curseur (je n'ai que les 10 enregistrements correspondant à la première ligne de mon curseur).

Sachant que :
Code :
1
2
3
4
5
6
7
 
SELECT count(id_child) AS nb_child FROM t_child;
+----------+
| nb_child |
+----------+
|     2203 | 
+----------+
Sauriez-vous d'où vient mon problème et comment le régler ?
Merci d'avance
__________________
[/HS]

une pétition pour la libération des drivers matériels ici
J'adorerai changer le monde, mais pas moyen de mettre la main sur le code source
magicbisous-nours est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/07/2011, 05h02   #2
Membre Expert
 
Homme Eric Dureuil
Développeur informatique
Inscription : avril 2011
Messages : 853
Détails du profil
Informations personnelles :
Nom : Homme Eric Dureuil
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : avril 2011
Messages : 853
Points : 1 332
Points : 1 332
salut,

done devrait plutôt être un bool pas un integer... les casts implicites ça peut donner des résultats bizarres...

car là il va rien faire car done existe (not sur autre chose que du bool ça test possiblement la non initialisation, c'est à dire null ou pas et pas vraiment la valeur c'est à dire 0 ou 1)...

je pense que ça vient de là
__________________
Eric Dureuil, développeur web, c/c++, java indépendant
soyons
pensez à mettre et
ericd69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/07/2011, 08h53   #3
Membre régulier
 
Avatar de magicbisous-nours
 
Inscription : octobre 2005
Messages : 201
Détails du profil
Informations forums :
Inscription : octobre 2005
Messages : 201
Points : 82
Points : 82
Envoyer un message via MSN à magicbisous-nours
Bonjour,
j'ai fait les modifications que tu m'as suggérées mais j'ai toujours le même problème
__________________
[/HS]

une pétition pour la libération des drivers matériels ici
J'adorerai changer le monde, mais pas moyen de mettre la main sur le code source
magicbisous-nours est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/07/2011, 09h12   #4
Membre confirmé
 
Avatar de GyZmoO
 
Homme Mickaël
Ingénieur développement logiciels
Inscription : février 2006
Messages : 402
Détails du profil
Informations personnelles :
Nom : Homme Mickaël
Âge : 27
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : High Tech - Produits et services télécom et Internet

Informations forums :
Inscription : février 2006
Messages : 402
Points : 238
Points : 238
Envoyer un message via MSN à GyZmoO
Bonjour bonjour !

Essaye peut être comme ça :

Code :
1
2
3
 
 
UNTIL done END REPEAT;
à la place de :

Code :
1
2
 
until NOT done end repeat;
ça devrait mieux marcher
__________________
define: Programmeur : Celui qui résout un problème que vous n'aviez pas, d'une façon que vous ne comprenez pas.
GyZmoO est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/07/2011, 09h18   #5
Membre régulier
 
Avatar de magicbisous-nours
 
Inscription : octobre 2005
Messages : 201
Détails du profil
Informations forums :
Inscription : octobre 2005
Messages : 201
Points : 82
Points : 82
Envoyer un message via MSN à magicbisous-nours
ok ça marche merci beaucoup !!
__________________
[/HS]

une pétition pour la libération des drivers matériels ici
J'adorerai changer le monde, mais pas moyen de mettre la main sur le code source
magicbisous-nours est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/07/2011, 15h14   #6
Membre Expert
 
Avatar de Yanika_bzh
 
Homme Yannick
Ingénieur Etudes & Developpements
Inscription : février 2006
Messages : 1 125
Détails du profil
Informations personnelles :
Nom : Homme Yannick
Localisation : France, Deux Sèvres (Poitou Charente)

Informations professionnelles :
Activité : Ingénieur Etudes & Developpements
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : février 2006
Messages : 1 125
Points : 1 670
Points : 1 670
et vous avez bien vos 10 lignes de créées ? (pas 9 par hasard ?)
__________________
Dans la connaissance du monde, ceux qui ne savent rien en savent toujours autant que ceux qui n'en savent pas plus qu'eux. (Pierre Dac)
Yanika_bzh est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 06h39.


 
 
 
 
Partenaires

Hébergement Web