【发布时间】:2017-01-19 13:32:13
【问题描述】:
我有一个需要转换的存储过程,以便它从表中读取链接服务器变量。据我所知,这样做的唯一方法是使用动态 SQL。问题是我无法转换我的查询。
原始查询:
SET @var1 = ''
SELECT @var1 = RECEIVER
FROM databse1.dbo.table1
WHERE SAPNUMBER = @var2
转换后的查询:
SET @srv = (SELECT server_name
FROM Configuration.dbo.Server_Switch)
SET @var1 = ''
exec (
'SELECT ' + @var1 + '= RECEIVER
FROM ' + @srv + '.databse1.dbo.table1
WHERE SAPNUMBER =' + @var2
)
我得到的错误是:
Incorrect syntax near '='
@var1 和@var2 是预先声明的变量。我很确定在动态 SQL 中为这些变量赋值时存在问题,因此出现“=”错误。我可以在转换此查询方面获得一些帮助吗?
【问题讨论】:
-
为什么你认为动态sql可以解决任何问题呢?它唯一能做的就是增加问题的可能性。想象一下,如果有人在
Server_Switch表中存储了一个Bobby Tables....
标签: sql-server variables server dynamic-sql