2

例如:

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

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

但是使用单独的 DECLARE 语句可以正常工作

DECLARE @t TABLE(id int);

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

Command(s) completed successfully.

为什么会发生这种情况?表声明和“通常”变量的声明有什么区别?

4

1 回答 1

1

我不知道“为什么”,确切地说,但我有几个猜测:

  1. 表变量不像普通变量那么简单。它不仅仅是内存中的一个地方:在幕后,正在创建一个临时表tempdb。所以也许语言的设计者想把它和更简单的变量区分开来。

  2. 表变量的语法比普通变量声明更复杂。具有多个表变量加上多个普通变量以及变量初始化的声明语句可能会变得非常复杂。也许语法对于解析器来说太混乱(或太模棱两可:对多种解释开放)。

于 2013-07-13T15:54:46.430 回答