如何在OPENQUERY中使用变量

时间:2016-09-16 11:28:26

标签: sql-server tsql openquery

运行下面的代码时收到错误。我相信它与使用的单引号数量有关。 如何在OPENQUERY命令中设置变量?

@declare @myStr varchar(6)
set @myStr = 'Test1'

SELECT *    
FROM OPENQUERY("192.168.1.1",'SET FMTONLY OFF; EXEC spNewTest @Param1 = ''+ @myStr +''')

Click to see the error message

此致 埃利奥·费尔南德斯

2 个答案:

答案 0 :(得分:1)

如果要在字符串中创建单引号,则必须使用两个单引号。例如: '''这是一个字符串'''将是一个包含以下内容的字符串: '这是一个字符串'

因此,对于您的问题,您必须将代码更改为:

@declare @myStr varchar(6)
set @myStr = 'Test1'

SELECT *    
FROM OPENQUERY("192.168.1.1",'SET FMTONLY OFF; EXEC spNewTest @Param1 = '''+ @myStr +'''')

答案 1 :(得分:0)

我刚刚找到了问题的答案,所以我想与你分享。

DECLARE @QUERY VARCHAR(MAX)
DECLARE @TSQL VARCHAR(100)
DECLARE @SP VARCHAR(50)

DECLARE @PARAMETERS VARCHAR(MAX)
DECLARE @PARAM1 VARCHAR(50)
DECLARE @PARAM2 VARCHAR(50)

SET @TSQL = N'SELECT * FROM OPENQUERY([192.168.1.1], ''SET FMTONLY OFF; '
SET @SP   = 'EXEC spNewTest '

SET @PARAM1 = '@Type='''+ QUOTENAME('Test','''') + ''''
SET @PARAM2 = '@Year='''+ QUOTENAME('2016','''') + ''''
SET @PARAMETERS = @PARAM1 + ', ' + @PARAM2

SET @QUERY = @TSQL + @SP + @PARAMETERS + ''')'

EXECUTE (@QUERY)

由于