2017-05-18 60 views
0

我需要编写一个存储过程,它将返回从链接服务器获取的参数的值。从链接服务器返回变量

我曾尝试声明动态SQL内部和外部的变量,但它失败,必须声明变量错误。

declare @srvr nvarchar(100) 
declare @dbn nvarchar(50) 

set @srvr = 'ServerName' 
set @dbn = 'DatabaseName' 

Declare @sql nvarchar(max) 

set @sql = 'declare @param nvarchar(50) set @param = (Select X from [' + @srvr + '].[' + @dbn + '].[TableName])' 

exec (@sql) 
print @param 

这将成为驻留在一个中央数据库的多个框架程序,这些程序会恢复其他数据库时到环境中形成的各种

任何想法的“准备脚本”的一部分,请叫?

非常感谢

+0

链接的服务器是一个红色的鲱鱼。这是关于动态SQL的一个问题。 –

回答

0

您需要声明变量两次。一次用于内部环境,一次用于外部环境。他们不需要使用相同的内部名称和外部名称:

declare @srvr nvarchar(100) 
declare @dbn nvarchar(50) 

set @srvr = N'ServerName' 
set @dbn = N'DatabaseName' 

Declare @sql nvarchar(max) 
declare @parms nvarchar(max) 
set @sql = N'set @param = (Select X from [' + @srvr + '].[' + @dbn + '].[TableName])' 
set @parms = N'@param nvarchar(50) output' 
declare @param2 nvarchar(50) 

exec sp_executesql @sql,@parms,@param = @param2 output 
print @param2 
+0

完美的谢谢 –