Maison > base de données > tutoriel mysql > Comment corriger les erreurs « Syntaxe incorrecte près de « » » dans les requêtes OPENROWSET avec des variables ?

Comment corriger les erreurs « Syntaxe incorrecte près de « » » dans les requêtes OPENROWSET avec des variables ?

Susan Sarandon
Libérer: 2025-01-03 22:53:41
original
839 Les gens l'ont consulté

How to Fix

Dépannage des requêtes OPENROWSET avec des variables

Lorsque vous utilisez la fonction OPENROWSET pour accéder à des données externes, vous pouvez rencontrer des erreurs si vous incluez des expressions variables dans le chaîne de requête. Un tel exemple est l'erreur « Syntaxe incorrecte près de « » ». Cela se produit lorsque vous essayez de concaténer une variable avec l'instruction OPENROWSET, comme le montre la requête suivante :

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

Dans cette requête, la variable @id est ajoutée à l'instruction EXEC à l'aide de l'opérateur ' ' . Cependant, OPENROWSET ne prend pas en charge l'utilisation d'expressions dans sa chaîne de requête.

Solution :

Pour résoudre ce problème, vous ne pouvez pas utiliser directement des variables dans la requête OPENROWSET. Au lieu de cela, vous pouvez créer du SQL dynamique pour transmettre les paramètres. 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

Dans cette solution, nous définissons une variable @sql pour contenir la requête SQL dynamique et concaténons la variable @ID à l'aide de la fonction CONVERT(). Cela nous permet d'exécuter l'instruction SQL dynamique avec le paramètre souhaité.

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