變量
局部變量是可以保存單個特定類型數據值的對象,變量的作用域從聲明變量的地方開始到聲明變量的批處理或存儲過程的結尾。
局部變量使用DECLARE語句定義,並且指定變量的數據類型,然后可以使用SET或SELECT語句為變量初始化;局部變量必須以“@”開頭,而且必須先聲明后使用。
聲明格式:
DECLARE @變量名 變量類型[,@變量名 變量類型…]
(1)變量名必須以 at 符 (@) 開頭
(2)變量類型可以是任何系統提供的公共語言運行時 (CLR) 用戶定義類型或別名數據類型。變量不能是 text、ntext 或 image 數據類型。
(3)要聲明多個局部變量,請在定義的第一個局部變量后使用一個逗號,然后指定下一個局部變量名稱和數據類型。
如: DECLARE @LastName nvarchar(30), @FirstName nvarchar(20), @StateProvince nchar(2);
(4)聲明變量時,其值設置為 NULL。
(5)在批處理中可聲明的局部變量的最大值是 10,000。
(6)Tansact-SQL 系統函數的名稱以兩個 at 符號 (@@) 打頭。早期版本中,@@functions 被稱為全局變量,但它們不是變量,也不具備變量的行為。@@functions 是系統函數,它們的語法遵循函數的規則。
初始化:
局部變量不能使用“變量=變量值”的格式進行初始化,必須使用SELECT或SET語句來設置其初始值(SET 語句是為變量賦值的首選方法)。
初始化格式:
SELECT @局部變量=變量值
SET @局部變量=變量值
如果在單個 SELECT 語句中有多個賦值子句,則 SQL Server 不保證表達式求值的順序,只有當賦值之間有引用時才能看到影響。
如果 SELECT 語句返回多行而且變量引用一個非標量表達式,則變量被設置為結果集最后一行中表達式的返回值。
例如,在此批處理中將 @EmpIDVariable 設置為返回的最后一行的 EmployeeID 值,此值為 1:
USE AdventureWorks; GO DECLARE @EmpIDVariable int; SELECT @EmpIDVariable = EmployeeID FROM HumanResources.Employee ORDER BY EmployeeID DESC; SELECT @EmpIDVariable; GO