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