2013-07-12 73 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)听起来很合理 –