簡體   English   中英

T-SQL表和一個DECLARE塊中的其他變量

[英]T-SQL Table and other variables in one DECLARE block

以下無法編譯:

  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] <table_type_definition> } 

可以聲明一個或多個@local_variable[,...n]部分),或只聲明一個@table_variable_name

如果您想要第一個代碼段工作,請創建表類型

CREATE TYPE dbo.ids as TABLE(Id Int NOT NULL)

DECLARE
    @DateFrom Date = '20151225',
    @DateTo Date = '20151226',
    @Ids dbo.ids;

注意:如果使用Table type作為FUNCTION/STORED PROCEDURE 輸入參數 ,則需要將其聲明為READONLY

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM