Maison >base de données >tutoriel mysql >Comment capturer les résultats d'une requête SQL dynamique dans une variable dans SQL Server ?
SQL Server : capture des résultats de requêtes SQL dynamiques dans une variable
Les procédures stockées utilisent souvent du SQL dynamique, créant des requêtes à la volée. Le principal défi consiste à récupérer les résultats de ces requêtes dynamiques au sein de la procédure elle-même.
Considérez ce scénario :
<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>
Cet extrait de code génère dynamiquement une COUNT(*)
requête, mais ne capture pas le résultat. Pour résoudre ce problème, nous avons besoin d'une approche modifié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>
Voici une explication détaillée :
Déclarons une variable de résultat : Nous déclarons @cnt
comme INT
pour contenir la sortie de la requête.
Modifier le SQL dynamique : L'instruction SELECT
est ajustée pour attribuer le résultat COUNT(*)
à @cnt
: SELECT @cnt=COUNT(*)
.
Utiliser sp_executesql
avec OUTPUT : sp_executesql
est utilisé avec le paramètre OUTPUT
pour spécifier que @cnt
recevra une valeur de la requête. Notez la déclaration du paramètre @cnt int OUTPUT
.
Récupérer le résultat : Après exécution, @cnt
contient le décompte. SELECT @count
affiche la valeur stockée.
Cette méthode raffinée capture efficacement les résultats SQL dynamiques dans une variable, permettant un traitement ultérieur ou un retour dans la procédure stockée.
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!