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