SQL Server本地变量未被识别为已声明

时间:2014-03-27 14:13:51

标签: sql sql-server-2008-r2

我有这个sql:

DECLARE @TableName NVARCHAR(128) ,
        @parent_table nvarchar(100),
        @parent_field nvarchar(100),
        @id_no_parent int = 0

SELECT @TableName = 'myTable'

SELECT @parent_field = parent_field, @parent_table = parent_table
FROM anothertable
WHERE table_name = @TableName

/*
if @parent_table <> @TableName
    SELECT @id_no_parent = @parent_field FROM @parent_table
else
SELECT @id_no_parent = -1
*/

print @TableName
print @parent_table
print @parent_field
print @id_no_parent

如果我保持代码原样,查询工作正常。当我取消注释注释代码时,我得到一个错误,即必须声明@parent_table局部变量。

我错过了什么吗?

1 个答案:

答案 0 :(得分:0)

您无法在不使用动态SQL的情况下构建类似的SQL语句;实质上,当您从变量中选择时,SQL Server期望一个表变量对象,而不是一个包含对真实表的引用的varchar变量。