我跑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