必须声明标量变量“@Value”

时间:2014-03-06 14:34:34

标签: sql sql-server tsql

请参阅以下代码:

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”。这是为什么?

1 个答案:

答案 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?