以下无法编译:
DECLARE @DateFrom Date = '20151225', @DateTo Date = '20151226', @Ids TABLE (Id Int NOT NULL);
有错误:
关键字"TABLE"附近的语法不正确.
但是当我DECLARE
为表变量声明添加它自己的时候,它完美地编译:
DECLARE @DateFrom Date = '20151225', @DateTo Date = '20151226'; DECLARE @Ids TABLE (Id Int NOT NULL);
这是SQL小提琴.
第一个片段有什么问题?我们不允许声明DECLARE
与其他变量声明共享同一块的表变量?
从DECLARE
文档:
声明表变量时,表变量必须是DECLARE语句中声明的唯一变量.
您也可以在语法中清楚地看到它:
DECLARE { { @local_variable [AS] data_type | [ = value ] } | { @cursor_variable_name CURSOR } } [,...n] | { @table_variable_name [AS]}
@local_variable
可以声明一个或多个s([,...n]
部分),或仅声明一个@table_variable_name
.