Maison > base de données > tutoriel mysql > Comment puis-je parcourir les résultats d'une requête T-SQL et exécuter une procédure stockée pour chaque ligne ?

Comment puis-je parcourir les résultats d'une requête T-SQL et exécuter une procédure stockée pour chaque ligne ?

Linda Hamilton
Libérer: 2025-01-01 08:03:09
original
854 Les gens l'ont consulté

How Can I Iterate Through T-SQL Query Results and Execute a Stored Procedure for Each Row?

Bouclage T-SQL dans les résultats de la requête

Supposons que vous ayez une requête qui récupère une liste d'ID à partir d'une table :

SELECT @id=table.id FROM table
Copier après la connexion

Vous devez ensuite exécuter une procédure stockée pour chaque ligne, en passant l'ID et un autre value :

EXEC stored_proc @varName=@id, @otherVarName='test'
Copier après la connexion

En T-SQL, vous pouvez accomplir cela en utilisant un CURSEUR :

DECLARE @id INT
DECLARE @name NVARCHAR(100)
DECLARE @getid CURSOR

SET @getid = CURSOR FOR
SELECT table.id,
       table.name
FROM   table

OPEN @getid
FETCH NEXT
FROM @getid INTO @id, @name
WHILE @@FETCH_STATUS = 0
BEGIN
    EXEC stored_proc @varName=@id, @otherVarName='test', @varForName=@name
    FETCH NEXT
    FROM @getid INTO @id, @name
END

CLOSE @getid
DEALLOCATE @getid
Copier après la connexion

Dans ce script :

  • Nous déclarons trois variables : @id (INT), @name (NVARCHAR(100)) et un CURSEUR nommé @getid.
  • Nous définissons @getid à un CURSEUR qui sélectionne les colonnes ID et name de la table.
  • Nous ouvrons le CURSEUR, récupérons la première ligne et stockons les résultats dans @id et @name.
  • Nous entrons dans une boucle WHILE qui continue tant que la valeur @@FETCH_STATUS est 0 (indiquant qu'une ligne a été récupérée avec succès).
  • À l'intérieur la boucle, nous exécutons la procédure stockée, en passant @id, la valeur littérale 'test' pour le paramètre @otherVarName et la valeur de nom récupérée pour le paramètre @varForName.
  • Nous récupérons la ligne suivante et stockons les résultats dans @id et @name.
  • Quand il n'y a plus de lignes à récupérer, nous fermons et désallouons le CURSOR.

Ce script vous permet de parcourir les résultats de la requête et d'exécuter la procédure stockée pour chaque ligne, en mettant à jour les noms et les valeurs des variables en fonction des données de la requête.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal