2013-07-12 76 views
1

例如:爲什麼我不能聲明一個表變量和其他聲明?

DECLARE 
    @t TABLE(id int), 
    @i int; 

Msg 102, Level 15, State 1, Line 2 
Incorrect syntax near ','. 

但使用單獨的聲明語句工作正常

DECLARE @t TABLE(id int); 

DECLARE 
    @i int, 
    @str varchar(10); 

Command(s) completed successfully. 

爲什麼出現這種情況?表格聲明和「通常」變量聲明有什麼區別?

回答

1

我不知道「爲什麼」,就是這樣,但我有一對夫婦的猜測:

  1. 表變量不是作爲一個普通的變量一樣簡單。這不僅僅是一個記憶中的地方:在幕後,tempdb正在創建臨時表。所以也許這個語言的設計者想要區分它和更簡單的變量。

  2. 表變量具有比普通變量聲明更復雜的語法。包含多個表變量和多個普通變量以及變量初始化的聲明語句可能會變得非常複雜。語法分析器的語法可能過於混亂(或者過於模棱兩可:打開多個解釋)。

+0

(+1)聽起來很合理 –