首页 >数据库 >mysql教程 >如何修复带变量的 OPENROWSET 查询中的'' '附近语法不正确”错误?

如何修复带变量的 OPENROWSET 查询中的'' '附近语法不正确”错误?

Susan Sarandon
Susan Sarandon原创
2025-01-03 22:53:41912浏览

How to Fix

使用变量对 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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn