OPENROWSET 查询中的变量替换
此查询在尝试将变量 (@ID) 动态嵌入到 OPENROWSET 语句中时遇到错误:
SELECT * FROM OPENROWSET( 'SQLNCLI', 'DRIVER={SQL Server};', 'EXEC dbo.sProc1 @ID = ' + @id )
错误消息表明 ' 附近的语法不正确',突出显示尝试将字符串与变量连接起来。
为什么会发生错误
OPENROWSET 不允许直接变量替换。传递给提供程序的字符串参数将逐字求值,从而防止求值和包含变量。
解决方案:动态 SQL
要在 OPENROWSET 查询中嵌入变量,您必须使用动态 SQL 技术:
以下示例:
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)
通过使用动态 SQL,您可以在运行时构造提供程序字符串并动态包含变量价值观。
以上是如何处理 OPENROWSET 查询中的变量替换?的详细内容。更多信息请关注PHP中文网其他相关文章!