2014-03-27 16 views
0

我有這樣的SQL:SQL Server的局部變量不被視爲宣佈

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

如果不使用動態SQL,則不能構建這樣的SQL語句;實質上,當你從一個變量中選擇時,SQL Server需要一個表變量對象,而不是一個持有對真實表的引用的varchar變量。