Stockage des résultats SQL dynamiques dans les variables SQL Server
Le SQL dynamique, fréquemment utilisé dans les procédures stockées, offre la flexibilité d'exécuter des instructions SQL au moment de l'exécution, permettant la création de requêtes adaptables et paramétrées. Cependant, capturer les résultats de ces requêtes dynamiques en variables présente un défi unique.
Le défi
Considérez une procédure stockée utilisant du SQL dynamique :
<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 nvarchar(75)', @city = @city</code>
L'objectif est de stocker le COUNT(*)
résultat dans une variable. Accéder directement à ce résultat n’est pas simple.
La solution : les paramètres de SORTIE
La solution réside dans l'utilisation des paramètres OUTPUT avec du SQL dynamique. Voici une version raffinée de la procédure stockée :
<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 nvarchar(75), @cnt int OUTPUT', @city = @city, @cnt = @count OUTPUT SELECT @count</code>
Cette approche améliorée intègre ces changements clés :
@count
, est déclarée pour contenir le résultat de la requête.COUNT(*)
au paramètre @cnt
.sp_executesql
est appelé, définissant explicitement @cnt
comme paramètre OUTPUT.@count
est sélectionnée, révélant le résultat récupéré.Cette méthode capture efficacement les résultats SQL dynamiques dans des variables, ce qui rend les procédures stockées adaptées aux tâches complexes de récupération de données.
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!