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
Libérer: 2025-01-11 11:06:42
original
570 Les gens l'ont consulté

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 :

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
Copier après la connexion

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 :

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
Copier après la connexion

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 de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal