请参阅以下代码:
declare @value as nvarchar(100)
declare @sql as nvarchar(100)
set @Value = ' WHERE ID=@Value'
set @sql='SELECT * FROM person ' + @Value
EXECUTE sp_executesql @sql
我得到的错误是:必须声明标量变量“@Value”。这是为什么?
答案 0 :(得分:4)
动态SQL是单独执行的,因此变量不可用(设置@Value ='WHERE ID = @ Value'),因此你需要让sp_executesql为它们声明它们。
您可以做的是按如下方式传递:
EXECUTE sp_executesql @sql, '@Value nvarchar(100)', @Value = @Value;
另请参阅此问题:How to set value to variable using 'execute' in t-sql?