comment puis-je parcourir un ensemble d'enregistrements à partir d'une sélection?
Disons par exemple que j'ai quelques enregistrements que je souhaite parcourir et faire quelque chose avec chaque enregistrement. Voici une version primitive de ma sélection:
select top 1000 * from dbo.table
where StatusID = 7
Merci
sql
sql-server
Froussard
la source
la source
Réponses:
En utilisant T-SQL et des curseurs comme celui-ci:
la source
C'est ce que j'ai fait si vous avez besoin de faire quelque chose d'itératif ... mais il serait sage de rechercher d'abord les opérations d'ensemble.
la source
Petit changement dans la réponse de sam yi (pour une meilleure lisibilité):
la source
select @TableID = (...)
instruction.En utilisant le curseur, vous pouvez facilement parcourir les enregistrements individuellement et imprimer les enregistrements séparément ou sous la forme d'un message unique comprenant tous les enregistrements.
la source
Juste une autre approche si vous utilisez bien les tables temporaires.J'ai personnellement testé cela et cela ne causera aucune exception (même si la table temporaire ne contient aucune donnée).
la source
COUNT(*)
et la seconde deCOUNT(*)
à 1 est bizarre.WHILE (@COUTNER <= @ROWID)
et vous n'avez pas besoin de décrémenter@ROWID
à chaque itération. BTW que se passe-t-il si lesROWID
s de votre table ne sont pas continus (certaines lignes ont été précédemment supprimées).Vous pouvez choisir de classer vos données et d'ajouter un ROW_NUMBER et un compte à rebours jusqu'à zéro pendant l'itération de votre ensemble de données.
la source
de cette façon, nous pouvons itérer dans les données de table.
STRINGTOTABLE est une fonction définie par l'utilisateur qui analysera les données séparées par des virgules et retournera la table. Merci
la source
Je pense que c'est l'exemple du moyen le plus simple d'itérer un élément.
la source