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 ?
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
.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!