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