我跑SQL错误使用动态SQL查询的变量声明
declare @h nvarchar(max)
declare @i int
set @i =1
declare @two nvarchar(max)
select @h = 'set @two = (select word from #LocalTempTable where Idcolumn =' + cast(@i as nvarchar(max)) +')'
exec(@h)
print @two
以下查询我有以下错误
Msg 137, Level 15, State 1, Line 1
Must declare the scalar variable "@two".
这究竟是为什么?
它是因为动态sql的范围与声明该变量的批处理或proc不同。改为使用sp_executeSQL,它接受参数。你仍然有一个问题引用#LocalTempTable –
谢谢康拉德。我将exec(@h)更改为exec sp_executeSQL @h。仍然得到完全相同的错误。我做了正确的改变吗? – user3171919
你想写动态SQL吗? – logixologist