我有这个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局部变量。
我错过了什么吗?
答案 0 :(得分:0)
您无法在不使用动态SQL的情况下构建类似的SQL语句;实质上,当您从变量中选择时,SQL Server期望一个表变量对象,而不是一个包含对真实表的引用的varchar变量。