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 )
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)
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!