Maison >base de données >tutoriel mysql >Comment capturer les résultats d'une requête SQL dynamique dans une variable de procédure stockée dans SQL Server ?

Comment capturer les résultats d'une requête SQL dynamique dans une variable de procédure stockée dans SQL Server ?

DDD
DDDoriginal
2025-01-11 11:04:41311parcourir

How to Capture Dynamic SQL Query Results into a Stored Procedure Variable in SQL Server?

Récupération des résultats de Dynamic SQL dans les procédures stockées SQL Server

Travailler avec du SQL dynamique dans des procédures stockées nécessite souvent de capturer les résultats de la requête. Cela peut être délicat, mais voici une solution pour récupérer efficacement les résultats d'une requête dynamique dans une variable de procédure stockée.

Disons que vous devez exécuter dynamiquement une requête comme celle-ci :

<code class="language-sql">DECLARE @sqlCommand NVARCHAR(1000)
DECLARE @city VARCHAR(75)
SET @city = 'London'
SET @sqlCommand = 'SELECT COUNT(*) FROM customers WHERE City = @city'
EXECUTE sp_executesql @sqlCommand, N'@city VARCHAR(75)', @city = @city</code>

L'exécution directe ne stockera pas le résultat dans une variable. Pour capturer la sortie, modifiez le code comme suit :

<code class="language-sql">DECLARE @sqlCommand NVARCHAR(1000)
DECLARE @count INT
DECLARE @city VARCHAR(75)
SET @city = 'New York'

SET @sqlCommand = 'SELECT @cnt = COUNT(*) FROM customers WHERE City = @city'
EXECUTE sp_executesql @sqlCommand, N'@city VARCHAR(75), @cnt INT OUTPUT', @city = @city, @cnt = @count OUTPUT

SELECT @count</code>

Cette approche améliorée utilise ces éléments clés :

  • @cnt Variable : Le SQL dynamique attribue le COUNT(*) résultat à une variable locale, @cnt.
  • OUTPUT Mot clé : Le mot clé OUTPUT désigne @cnt comme paramètre de sortie.
  • sp_executesql Paramètres : sp_executesql reçoit désormais à la fois le paramètre d'entrée @city et le paramètre de sortie @cnt.
  • Récupération des résultats : Enfin, SELECT @count affiche le résultat capturé. Cette variable contient désormais le nombre renvoyé par la requête dynamique.

Cette méthode fournit un moyen robuste de gérer les résultats du SQL dynamique dans vos procédures stockées, garantissant ainsi une récupération de données précise et efficace.

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!

Déclaration:
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