(MySQL) Procédure Stockée - Boucle à travers résultat
Nous sommes à la migration et à l'application de PostgreSQL MySQL.
En gros, je voudrais faire une boucle par un résultat MySQL.
SELECT col1 FROM table1;
<--- (1) le résultat de cette requête.
LOOP THROUGH col1Result
SELECT myCol FROM table2 WHERE thisCol = col1Result
<--- l'Égalité de tous les résultats de la requête précédente.
END LOOP;
J'ai aussi trouvé cette référence
http://dev.mysql.com/doc/refman/5.0/en/cursors.html
Cependant, je suis coincé avec cette ligne.
FETCH cur1 INTO a, b;
Ne pas obtenir chaque résultat de cur1
dans des variables a
et b
?
Comment puis-je m'assurer que je suis actuellement sur le premier index de la variable a
?
Voici un exemple sur la façon dont le résultat sera utilisé sur ma fin (Écrit dans PostgreSQL).
FOR my_record IN
SELECT DISTINCT col1
FROM table1
WHERE col2 = param1;
LOOP
SELECT DISTINCT col4
FROM table2
WHERE col3 = my_record.col1;
IF true THEN
RAISE EXCEPTION '%', 'ERROR MESSAGE' || my_record.col1;
END IF
SELECT DISTINCT col5
FROM table3
WHERE col6 = my_record.col1;
IF true THEN
RAISE EXCEPTION '%', ERROR MESSAGE' || my_record.col1;
END IF;
END LOOP;
OriginalL'auteur Michael Ardan | 2013-08-05
Vous devez vous connecter pour publier un commentaire.
cur1
permettrait de lire les résultats de chaque ligne. Chaque fois qu'il fait une boucle, on obtient le rang suivant. Donc, la première fois en boucle, il obtiendra la première ligne.Cela va durer jusqu'à ce que la boucle de pauses ou de pas de plusieurs lignes sont disponibles (dans ce cas un Pas de condition de Données se produit.
Voir cette pour plus d'. Espérons que cela aide.
Votre accueil @MichaelArdan . Si (ça aide) upvote ce que le droit de réponse de sorte qu'il peut aider d'autres aussi ; d'autre demander de plus ; 🙂
Bonjour, Monsieur le Woofmeow. Je me demande ce que fait le "fait" dans l'exemple donné. J'ai essayé la procédure d'exemple, et qui finit dans le message d'erreur qui dit: Code d'Erreur: 1054. Unknown column 'fait' in 'field list'.
Désolé, je n'avais pas remarqué que le fait a été effectivement déclaré.
Ses cool @MichaelArdan vous devez être surchargés de travail. Nous avons tous le faire 🙂
OriginalL'auteur woofmeow
Pourquoi voudriez-vous utiliser une boucle lorsque vous pouvez faire le traitement avec une jointure?
Cela fonctionne dans les deux Postgres et MySQL.
Depuis le nombre de caractères dans cette zone de commentaire dépasse, veuillez voir mes modifications.
OriginalL'auteur Gordon Linoff