MySQL Curseur de la corvée d'une seule ligne
My SQL:
CREATE PROCEDURE INV_MIN_PURCHASE_PRICE()
BEGIN
DECLARE done INT;
DECLARE current_inventory_ID INT;
DECLARE cur1 CURSOR FOR SELECT inventory_ID FROM _inventory;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;
SET done = 0;
OPEN cur1;
REPEAT
FETCH cur1 INTO current_inventory_ID;
UPDATE _debug SET rows=rows+1;
UNTIL done
END REPEAT;
CLOSE cur1;
END;
Lorsque j'appelle cette procédure MySQL est l'extraction d'une ligne (_debug rows
sont augmentés de 1). Pourquoi?? Est-ce un bug?
bonne question.. alors quel est la solution
OriginalL'auteur Peter | 2012-08-18
Vous devez vous connecter pour publier un commentaire.
J'ai juste eu le même problème avec une procédure stockée dans le serveur MySQL. Il était censé obtenir tous les enregistrements d'une table qui ont une valeur null dans une colonne spécifique, puis de la remplir de la valeur à partir d'une autre table. Cependant, il s'est arrêté après un enregistrement:
La réponse est que le "gestionnaire pour non trouvé" n'est pas exécuté seulement si le curseur n'ont pas retourné les lignes, mais aussi si le select sur la table B n'ont pas retourné de lignes. Ma solution a été d'utiliser une deuxième variable qui a été fixée par le gestionnaire et de réinitialiser le "fait" de la variable après le sélectionner:
Plus: Il est bien évidemment possible de le faire sans une seconde variable en réinitialisant le "fait" après le sélectionner:
OriginalL'auteur user1987933
Avez-vous essayé de faire une BOUCLE au lieu de la RÉPÉTITION de construire? Semble mieux fonctionner dans MySQL. Remplacer le RÉPÉTER à la FIN de RÉPÉTER la section avec:
Je pars du principe que si vous essayez de SÉLECTIONNER inventory_id DE _inventory dans la console MySQL, vous obtenez plus qu'une ligne arrière, droite?
Bien sûr. J'ai déjà résolu le problème. Mise à jour de mon serveur MySQL pour la version la plus récente et maintenant, le code fonctionne très bien.
Grand. Heureux de vous entendre ai eu de travail.
OriginalL'auteur davidethell
OriginalL'auteur nit