local_variable DECLARE @local_variable - 北京怡康軟件科技有限公司 資源網(wǎng) "/>
在批處理或過程的正文中用 DECLARE 語句聲明變量,并用 SET 或 SELECT 語句給其指派值。游標變量可通過該語句聲明,并且可用在其它與游標相關的語句中。所有變量在聲明后均初始化為 NULL。
DECLARE
{{ @local_variable data_type }
| { @cursor_variable_name CURSOR }
| { table_type_definition }
} [ ,...n]
< table_type_definition > ::=
TABLE ( { < column_definition > | < table_constraint > } [ ,...]
)
< column_definition > ::=
column_name scalar_data_type
[ COLLATE collation_ name ]
[ [ DEFAULT constant_expression ] | IDENTITY [ ( seed , increment ) ] ]
[ ROWGUIDCOL ]
[ < column_constraint > ]
< column_constraint > ::=
{ [ NULL | NOT NULL ]
| [ PRIMARY KEY | UNIQUE ]
| CHECK ( logical_expression )
}
< table_constraint > ::=
{ { PRIMARY KEY | UNIQUE } ( column_name [ ,...] )
| CHECK ( search_condition )
}
@local_variable
是變量的名稱。變量名必須以 at 符 (@) 開頭。局部變量名必須符合標識符規(guī)則。有關更多信息,請參見使用標識符。
data_type
是任何由系統(tǒng)提供的或用戶定義的數(shù)據(jù)類型。變量不能是 text、ntext 或 image 數(shù)據(jù)類型。有關系統(tǒng)數(shù)據(jù)類型的更多信息,請參見數(shù)據(jù)類型。有關用戶定義數(shù)據(jù)類型的更多信息,請參見 sp_addtype。
@cursor_variable_name
是游標變量的名稱。游標變量名必須以 at 符 (@) 開頭并遵從標識符規(guī)則。
CURSOR
指定變量是局部游標變量。
table_type_definition
定義表數(shù)據(jù)類型。表聲明包括列定義、名稱、數(shù)據(jù)類型和約束。允許的約束類型只包括 PRIMARY KEY、UNIQUE KEY、NULL 和 CHECK。
table_type_definition 是在 CREATE TABLE 中用于定義表的信息子集。元素和基本定義都包含在該定義中;有關更多信息,請參見 CREATE TABLE。
n
是表示可以指定多個變量并對變量賦值的占位符。當聲明表變量時,表變量必須是 DECLARE 語句中正在聲明的唯一變量。
column_name
是表中的列名。
scalar_data_type
指定列是標量數(shù)據(jù)類型。
[COLLATE collation_name]
指定列的排序規(guī)則。collation_name 可以是 Windows 排序規(guī)則名稱或 SQL 排序規(guī)則名稱,且只適用于 char、varchar、text、nchar、nvarchar 和 ntext 數(shù)據(jù)類型的列。如果沒有指定,則可給列指定用戶定義數(shù)據(jù)類型的排序規(guī)則(如果列為用戶定義數(shù)據(jù)類型)或數(shù)據(jù)庫的默認排序規(guī)則。
有關 Windows 和 SQL 排序規(guī)則名稱的更多信息,請參見 COLLATE。
DEFAULT
如果在插入過程中未顯式提供值,則指定為列提供的值。DEFAULT 定義可適用于除定義為 timestamp 或帶 IDENTITY 屬性的列以外的任何列。除去表時,將刪除 DEFAULT 定義。只有常量值(如字符串)、系統(tǒng)函數(shù)(如 SYSTEM_USER())或 NULL 可用作默認參數(shù)。為保持與 SQL Server 早期版本的兼容,可以給 DEFAULT 指派約束名。
constant_expression
是用作列的默認值的常量、NULL 或系統(tǒng)函數(shù)。
IDENTITY
表示新列是標識列。在表中添加新行時,SQL Server 為列提供一個唯一的增量值。標識列通常與 PRIMARY KEY 約束一起用作表的唯一行標識符??梢詫?IDENTITY 屬性指派給 tinyint、smallint、int、decimal(p,0) 或 numeric(p,0) 列。對于每個表只能創(chuàng)建一個標識列。不能對標識列使用綁定默認值和 DEFAULT 約束。必須同時指定種子和增量,或者都不指定。如果二者都未指定,則取默認值 (1,1)。
seed
是裝入表的第一行所使用的值。
increment
是添加到以前裝載的列標識值的增量值。
ROWGUIDCOL
表示新列是行的全局唯一標識符列。對于每個表只能指派一個 uniqueidentifier 列作為 ROWGUIDCOL 列。ROWGUIDCOL 屬性只能指派給 uniqueidentifier 列。
NULL | NOT NULL
是決定在列中是否允許空值的關鍵字。
PRIMARY KEY
是通過唯一索引對給定的一列或多列強制實體完整性的約束。對于每個表只能創(chuàng)建一個 PRIMARY KEY 約束。
UNIQUE
是通過唯一索引為給定的一列或多列提供實體完整性的約束。一個表可以有多個 UNIQUE 約束。
CHECK
是通過限制可輸入到一列或多列中的可能值強制域完整性的約束。
logical_expression
是返回 TRUE 或 FALSE 的邏輯表達式。
變量常用在批處理或過程中,作為 WHILE、LOOP 或 IF...ELSE 塊的計數(shù)器。
變量只能用在表達式中,不能代替對象名或關鍵字。若要構造動態(tài) SQL 語句,請使用 EXECUTE。
局部變量的作用域是在其中聲明局部變量的批處理、存儲過程或語句塊。有關在語句塊內(nèi)使用局部變量的更多信息,請參見使用 BEGIN...END。
當前給其指派有游標的游標變量可在下列語句中作為源引用:
在所有這些語句中,如果引用的游標變量存在,但是不具有當前分配給它的游標,那么 Microsoft® SQL Server™ 會產(chǎn)生錯誤。如果引用的游標變量不存在,SQL Server 將產(chǎn)生對另外一類未聲明變量所產(chǎn)生的相同錯誤。
游標變量:
下例使用名為 @find 的局部變量檢索所有姓以 Ring 開頭的作者信息。
USE pubs
DECLARE @find varchar(30)
SET @find = 'Ring%'
SELECT au_lname, au_fname, phone
FROM authors
WHERE au_lname LIKE @find
下面是結果集:
au_lname au_fname phone
-------------------------------------- -------------------- ------------
Ringer Anne 801 826-0752
Ringer Albert 801 826-0752
(2 row(s) affected)
下例從 Binnet & Hardley (pub_id = 0877) 的雇員中檢索從 1993 年 1 月 1 日起所雇傭的雇員名稱。
USE pubs
SET NOCOUNT ON
GO
DECLARE @pub_id char(4), @hire_date datetime
SET @pub_id = '0877'
SET @hire_date = '1/01/93'
-- Here is the SELECT statement syntax to assign values to two local
-- variables.
-- SELECT @pub_id = '0877', @hire_date = '1/01/93'
SET NOCOUNT OFF
SELECT fname, lname
FROM employee
WHERE pub_id = @pub_id and hire_date >= @hire_date
下面是結果集:
fname lname相關文章
-------------------- ------------------------------
Anabela Domingues
Paul Henriot
(2 row(s) affected)