Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 如何在OPENQUERY中使用变量_Sql Server_Tsql_Openquery - Fatal编程技术网

Sql server 如何在OPENQUERY中使用变量

Sql server 如何在OPENQUERY中使用变量,sql-server,tsql,openquery,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 +''') 问候,, Elio Fernandes如果你想在一个字符串中创建一个单引号,你必须放在两个单

运行下面的代码时出现错误。我认为这与使用的单引号的数量有关。 如何在OPENQUERY命令中设置变量

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

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

问候,,
Elio Fernandes

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

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

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

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

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

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

@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)

谢谢

我刚刚找到了我问题的答案,所以我想和大家分享一下

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)

谢谢

添加错误消息会很有帮助。请参阅我文章中的错误消息。@ElioFernandes,根据,查询字符串不能包含变量。您需要构建整个
SELECT…OPENQUERY
语句,并使用
execute
sp_executesql
执行语句字符串。添加错误消息会很有帮助。请参阅我的帖子中的错误消息。@ElioFernandes,根据,查询字符串不能包含变量。您需要构建整个
SELECT…OPENQUERY
语句,并使用
execute
sp_executesql
执行语句字符串。