Maison > base de données > tutoriel mysql > Comment gérer la substitution de variables dans les requêtes OPENROWSET ?

Comment gérer la substitution de variables dans les requêtes OPENROWSET ?

Patricia Arquette
Libérer: 2025-01-05 18:15:39
original
608 Les gens l'ont consulté

How to Handle Variable Substitution in OPENROWSET Queries?

Substitution de variable dans les requêtes OPENROWSET

Cette requête rencontre une erreur lors de la tentative d'intégration dynamique d'une variable (@ID) dans une instruction OPENROWSET :

SELECT * 
FROM OPENROWSET(
    'SQLNCLI',
    'DRIVER={SQL Server};',
    'EXEC dbo.sProc1 @ID = ' + @id 
 )
Copier après la connexion

Le message d'erreur indique une syntaxe incorrecte près de ' ', mettant en évidence la tentative de concaténer une chaîne avec une variable.

Pourquoi l'erreur se produit

OPENROWSET ne permet pas la substitution directe de variable. L'argument de chaîne transmis au fournisseur est évalué textuellement, empêchant l'évaluation et l'inclusion de variables.

Solution : Dynamic SQL

Pour intégrer des variables dans les requêtes OPENROWSET, vous devez utiliser des techniques SQL dynamiques :

  1. Déclarez la variable et initialisez-la avec un value.
  2. Construisez une chaîne SQL dynamique en concaténant l'instruction OPENROWSET avec la valeur de la variable.
  3. Préparez et exécutez le SQL dynamique.

Voici un exemple :

Declare @ID int
Declare @sql nvarchar(max)
Set @ID=1
Set @sql='SELECT * 
FROM OPENROWSET(
               ''SQLNCLI'',
               ''DRIVER={SQL Server};'',
               ''EXEC dbo.usp_SO @ID =' + convert(varchar(10),@ID) + ''')'

-- Print @sql
 Exec(@sql)
Copier après la connexion

En utilisant du SQL dynamique, vous pouvez construire la chaîne du fournisseur au moment de l'exécution et inclure dynamiquement la variable valeurs.

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!

source:php.cn
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