我试图将字符串参数连接到sp_executesql语句,但我找不到这样做的方法。很有可能我没有搜索到净值合适的词。我想要做的事情可以用下面的代码来举例说明,我希望sp_executesql语句给出与第一个print语句相同的结果(print(@t1 + @t2):
declare @r nvarchar(max), @t1 nvarchar(2), @t2 nvarchar(2)
set @t1 = 'AA'
set @t2 = 'BB'
print(@1 + @t2)
set @r = 'print(@t)'
exec sp_executesql @r, N'@t nvarchar(100)', @t = ?
我试过:
@t = @t1 + @t2
和
@t = concat(@t1, @t2)
我的第一个问题:这可能吗(我想是可能的)?实际上,这是关于在多个表上进行调整和一些计算。表名由三部分组成;前缀、名称和后缀。所涉及的数据库和部分表名称在每次迭代中以不同的方式更改。在本例中,第一次迭代使用一个数据库和一个表。第二次迭代更改数据库,因此更改表名。第三次迭代使用与第二次迭代相同的数据库,使用相同的前缀和名称,但使用不同的后缀等等。这个问题可以通过表名的不同部分的变量来解决,表名连接到一个"database.schema"。表name">
我的第二个问题:应该如何编写代码来工作(如果可能的话)?
像其他人一样,我仍然不确定您在这里要做什么,但在猜测中,我建议尝试如下:
declare @r nvarchar(max), @t1 nvarchar(2), @t2 nvarchar(2)
set @t1 = 'AA'
set @t2 = 'BB'
declare @t nvarchar(max)
set @t = @t1 + @t2 -- <-- added this
print(@t1 + @t2)
set @r = 'print(@t)'
exec sp_executesql @r, N'@t nvarchar(100)', @t = @t -- <-- and this