如何在 OPENQUERY 中使用变量
How can I use a variable inside 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
此致,
埃里奥·费尔南德斯
如果要在字符串中创建单引号,则必须放入两个单引号。例如:
'''this is a string''' 将是一个包含以下内容的字符串:
'this is a string'
因此,对于您的问题,您必须将代码更改为:
@declare @myStr varchar(6)
set @myStr = 'Test1'
SELECT *
FROM OPENQUERY("192.168.1.1",'SET FMTONLY OFF; EXEC spNewTest @Param1 = '''+ @myStr +'''')
我刚刚找到了问题的答案,所以想与您分享。
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)
谢谢
我在下面的代码中遇到错误 运行。我相信这与使用的单引号数量有关。 如何在 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
此致, 埃里奥·费尔南德斯
如果要在字符串中创建单引号,则必须放入两个单引号。例如: '''this is a string''' 将是一个包含以下内容的字符串: 'this is a string'
因此,对于您的问题,您必须将代码更改为:
@declare @myStr varchar(6)
set @myStr = 'Test1'
SELECT *
FROM OPENQUERY("192.168.1.1",'SET FMTONLY OFF; EXEC spNewTest @Param1 = '''+ @myStr +'''')
我刚刚找到了问题的答案,所以想与您分享。
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)
谢谢