【问题标题】:Why I can't declare a table variable together with others declarations?为什么我不能将表变量与其他声明一起声明?
【发布时间】:2013-07-12 18:15:15
【问题描述】:

例如:

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.

为什么会这样?表声明和“通常”变量的声明有什么区别?

【问题讨论】:

    标签: sql-server-2008 tsql syntax sql-server-2012 declare


    【解决方案1】:

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

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

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

    【讨论】:

    • (+1) 听起来很合理
    猜你喜欢
    • 1970-01-01
    • 2016-04-23
    • 2011-03-29
    • 1970-01-01
    • 1970-01-01
    • 2014-11-09
    • 2023-03-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多