使用变量对 OPENROWSET 查询进行故障排除
使用 OPENROWSET 函数访问外部数据时,如果在变量表达式中包含变量表达式,则可能会遇到错误查询字符串。此类示例之一是错误“‘ ’附近的语法不正确。”当您尝试将变量与 OPENROWSET 语句连接时,会发生这种情况,如以下查询所示:
SELECT * FROM OPENROWSET( 'SQLNCLI', 'DRIVER={SQL Server};', 'EXEC dbo.sProc1 @ID = ' + @id )
在此查询中,变量 @id 使用 ' ' 运算符附加到 EXEC 语句。但是,OPENROWSET 不支持在其查询字符串中使用表达式。
解决方案:
要解决此问题,您不能直接在 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 来保存动态 SQL 查询,并使用 CONVERT() 函数连接变量 @ID。这允许我们使用所需的参数执行动态 SQL 语句。
以上是如何修复带变量的 OPENROWSET 查询中的'' '附近语法不正确”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!