【发布时间】:2017-11-30 20:06:44
【问题描述】:
我有来自触发器的代码部分。当我测试我的触发器时,我的 exec 没有返回任何数据。
我将我的 exec 值声明为:
declare
@sql nvarchar(MAX),
@SQLString varchar(MAX)
这里是选择:
set @sql = N'select '
set @sql = @sql + '@SQLString = convert(varchar(1000),d.' + @fieldname + ')' +' + convert(varchar(1000),i.' + @fieldname + ')'
set @sql = @sql + ' from #ins i full outer join #del d'
set @sql = @sql + @PKCols --
set @sql = @sql + ' where i.' + @fieldname + ' <> d.' + @fieldname
set @sql = @sql + ' or (i.' + @fieldname + ' is null and d.' + @fieldname + ' is not null)'
set @sql = @sql + ' or (i.' + @fieldname + ' is not null and d.' + @fieldname + ' is null)'
(所有变量都可以正常工作):就像我打印 @sql 一样 ->
select @SQLString = convert(varchar(1000), d.ActionID) + convert(varchar(1000), i.ActionID)
from #ins i
full outer join #del d on i.ActionID = d.ActionID
where i.ActionID <> d.ActionID
or (i.ActionID is null and d.ActionID is not null)
or (i.ActionID is not null and d.ActionID is null)
这里是执行:
EXEC sp_executesql @sql,
N'@SQLString varchar(MAX) OUTPUT',
@SQLString = @SQLString OUTPUT;
但 print 什么也没显示:
print '@SQLString:' + @SQLString;
【问题讨论】:
标签: sql-server exec sp-executesql