T-SQL de la boucle sur les résultats de la requête
Je exécutez une requête select @id=table.id from table
et j'ai besoin de faire une boucle sur les résultats afin que je puisse exec un magasin de procédure pour chaque ligne exec stored_proc @varName=@id,@otherVarName='test'
Comment puis-je faire dans un script T-SQL?
- eh bien, je n'ai pas essayer quoi que ce soit. Je ne sais pas comment faire. Je suppose que je pourrais essayer d'écrire un
C
style de boucle, mais je doute que se travail. Peut-être unPHP
style de boucle, mais encore une fois je doute que ce sera trop de travail. J'ai besoin de tout faire en T-SQL en ce que je peux exécuter le SQL dans SMS sans un langage externe de faire la boucle de la... Hense la question en premier lieu. - L'ironie de ces observations/réponses (mais moins que le "google" des réponses), c'est que, au fil du temps, ils ont tendance à devenir haut de résultats de google. Ainsi tour à tour, quand quelqu'un cherche une solution à un problème, la première chose qu'il va trouver est un bashing (souvent justifiée) de quelqu'un d'autre qui a eu le problème, mais qui n'a pas pris la peine de chercher la réponse lui-même. À la longue, ça devient gênant pour les gens qui, en fait, essayer de chercher la réponse.
- eh bien, pour être honnête, dans le cas où il n'y a pas de bonne réponse à une question commune, il n'apparaît pas sur la première page de résultats de recherche Google. Normalement.
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser un CURSEUR dans ce cas:
Modifiés pour afficher les différents paramètres de la table.
@name
que je crois au travail, mais il a été un moment depuis que j'utilise un curseur maintenant!.Vous pourriez faire quelque chose comme ceci:
Mon préférer est la solution de Microsoft KB 111401 http://support.microsoft.com/kb/111401.
Le lien fait référence à 3 exemples:
Cet article décrit plusieurs méthodes que vous pouvez utiliser pour simuler un curseur comme FETCH-SUIVANT la logique dans une procédure stockée, le déclencheur ou le lot Transact-SQL.
essayez ceci: