數(shù)據(jù)庫知識:SQLServer變量相關(guān)知識介紹
1、概述
SQLServer變量對應(yīng)內(nèi)存中的一個存儲空間。它和常量不同,變量的值可以在執(zhí)行過程中改變。
2、分類
SQLServer變量根據(jù)作用范圍不同主要分為局部變量和全局變量。
2.1.局部變量
局部變量是用戶在程序中定義的變量,它僅在定義的程序范圍內(nèi)有效。局部變量可以用來保存從表中讀取的數(shù)據(jù),也可以作為臨時變量保存計算的中間結(jié)果。
注意:局部變量名稱的第一個字符必須為一個@。
示例:
- -- 定義兩個局部變量
- DECLARE @m int,@n int;
- -- 賦值
- SET @m=9;
- SET @n=1;
- -- 查詢
- SELECT @m+@n;
2.2 全局變量
全局變量通常以@@開頭。這些變量一般都是SQL Server中的系統(tǒng)函數(shù),它們的語法遵循函數(shù)的規(guī)則。用戶可以在程序中使用這些函數(shù)測試系統(tǒng)特性和SQL命令的執(zhí)行情況。常用的全局變量如下:
- @@ERROR -- 最后一個SQL錯誤的錯誤號
- @@IDENTITY -- 最后一次插入的標(biāo)識值
- @@LANGUAGE -- 當(dāng)前使用的語言的名稱
- @@MAX_CONNECTIONS -- 可以創(chuàng)建的同時連接的最大數(shù)目
- @@ROWCOUNT -- 受上一個SQL語句影響的行數(shù)
- @@SERVERNAME -- 本地服務(wù)器的信息
- @@TRANSCOUNT -- 當(dāng)前連接打開的事物數(shù)
- @@VERSION -- 查看SQL Server的版本信息
3.聲明變量
3.1、簡單聲明
變量只有在聲明后才能使用,可以使用DECLARE語句來聲明變量。在聲明變量時可以指定變量的數(shù)據(jù)類型和長度。
- DECLARE @name nvarchar(30);
3.2 聲明多個變量
聲明多個局部變量,需要在定義的局部變量后使跟上一個逗號,然后指定下一個局部變量名稱和數(shù)據(jù)類型。
- DECLARE @Name nvarchar(30), @Age int;
3.3 變量作用域
在使用變量時,需要注意變量的作用域。變量具有局部作用域,只在定義它們的批處理或過程中可見。作用域范圍從聲明變量的地方開始到聲明變量的批處理或存儲過程的結(jié)尾。
- USE DB;
- GO
- DECLARE @Age int;
- SET @Age = 30;
- GO -- 結(jié)束符
- select @Age -- 報錯
4.變量賦值
在聲明變量后,變量值被默認(rèn)設(shè)置為NULL??梢允褂肧ET或SELECT語句。SET是為變量賦值的首選方法。
變量也可以通過選擇列表中當(dāng)前所引用的值賦值。如果在選擇列表中引用變量,則它應(yīng)當(dāng)被賦以標(biāo)量值或者SELECT語句應(yīng)僅返回一行。
示例:
- DECLARE @Age int;
- -- SELECT語句賦值
- SELECT @Age = age from t_user ORDER BY age desc;-- 返回最后一行的值
- select @Age;