[英]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.