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

Comment capturer les résultats d'une requête SQL dynamique dans une variable dans SQL Server ?

Barbara Streisand
Barbara Streisandoriginal
2025-01-11 11:06:42517parcourir

How to Capture Dynamic SQL Query Results into a Variable in 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 :

  1. Déclarons une variable de résultat : Nous déclarons @cnt comme INT pour contenir la sortie de la requête.

  2. Modifier le SQL dynamique : L'instruction SELECT est ajustée pour attribuer le résultat COUNT(*) à @cnt : SELECT @cnt=COUNT(*).

  3. 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.

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

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