數據在內存中存儲能夠變化的量叫變量。爲了在內存中存儲信息,用戶必須指定存儲信息的單元,併爲了該存儲單元命名,sql
以方便獲取信息,這就是變量的功能。Transact-SQL可使用兩種變量,一種是局部變量,另一種是全局變量。數據庫
局部變量和全局變量的主要區別在於存儲的數據帳做用範圍不同。編程
局部變量是用戶可自定義的變量,它的做用範圍僅在程序內部。局部變量的名稱是用戶自定義的,服務器
命名的局部變量名要符合SQLserver2012標識符命名規則,局部變量名必須以@開頭。網絡
語法:ide
DECLARE { @varaible_name datatype [,...n] }
參數說明:sqlserver
@varaible_name:局部變量的變量名spa
datatype:局部變量使用的數據類型,能夠除text,ntext,image類型外全部的系統數據類型和用戶自定義數據類型。3d
例如,聲明變量@testnamecode
SQL語句以下:
declare @testname nvarchar(10)
爲變量賦值的方式通常有兩種,一種是使用select語句,一種是使用set語句。
使用select語句賦值SQL:
use db_tse declare @testname nvarchar(10) select @testname=stname from Student where id='1001' print @testname
說明:首先聲明變量testname而後student表裏面的id=1001這條數據的stname賦值給@testname,最後print打印出來
declare @a int select @a=1 print @a
給多個變量賦值:
declare @a int,@b nvarchar(10),@c int select @a=1,@b='Tse先生',@c=2
使用set語句賦值SQL:
簡單的賦值例子:
declare @testname nvarchar(20) set @testname = 'Are you ok?' print @testname
全局變量是SQLserver系統內部事先定義好的變量,不用用戶參與定義,對用戶而言,其做用範圍並不侷限於某一程序,
而是任何程序都可隨時調用。全局變量一般用於存儲一些SQLserver的配置設定值和效能統計數據。
(1)@@CONNECTIONS:記錄自最後一次服務器啓動以來,全部針對這臺服務器進行的鏈接數目,包括沒有鏈接成功的嘗試。
(2)@@CPU_BUSY:記錄自上次啓動以來嘗試的鏈接數,不管鏈接成功仍是失敗,都以ms爲單位的CPU工做時間。
(3)@@CURSOR_ROWS:返回本次服務器鏈接中,打開遊標取出數據行的數目。
(4)@@DBTS:返回當前數據庫中timestamp數據類型的當前值。
(5)@@ERROR:返回上一條T-SQL語句所返回的錯誤代碼。若是sqlserver服務器執行完上一條語句後,執行成功沒有錯誤,則返回@@ERROR的值爲0。
(6)@@FETCH_STATUS:返回上一次使用遊標FETCH操做返回的狀態值,且返回值爲整型。
返回值 | 描述 |
0 | FETCH語句成功 |
-1 | FETCH語句失敗或此行不在結果集中 |
-2 | 被提取的行不存在 |
(7)@@IDENTITY:返回最近一次插入的identity列的數值,返回值是numeric。
(8)@@IDLE:返回以ms爲單位計算SQLserver服務器自最近一次啓動以來處於停頓狀態的時間。
(9)@@IO_BUSY:返回以ms爲單位計算的SQLserver服務器自最近一次啓動以來花在輸入和輸出上的時間。
(10)@@LOCK_TIMEOUT:返回當前對數據鎖定的超時設置。
(11)@@PACK_RECEIVED:返回sqlserver服務器自最近一次啓動以來一共從網絡上接收數據分組的數目。
(12)@@PACK_SENT:返回sqlserver服務器自最近一次啓動以來一共向網絡上發送數據分組的數目。
(13)@@PROCID:返回當前存儲過程的ID標識。
(14)@@REMSERVER:返回在登陸記錄中記載遠程sqlserver服務器的名字
(15)@@ROWCOUNT:返回上一條sql語句所影響到數據行的數目。對全部不影響數據庫數據的SQL語句,這個全局變量返回的結果是0。在進行數據庫編程時,常常要檢測@@ROWCOUNT的返回值,以便明確所執行的操做是否達到了目標。
(16)@@SPID:返回當前服務器進程的ID標識。
(17)@@TOTAL_ERRORS:返回自sqlserver服務器啓動以來,所遇到讀寫錯誤的總數。
(18)@@TOTAL_READ:返回自sqlserver服務器啓動以來,讀磁盤的次數。
(19)@@TOTAL_WRITE:返回自sqlserver服務器啓動以來,寫磁盤的次數。
(20)@@TRANCOUNT:返回當前鏈接中,處於活動狀態事務的數目。
(21)@@VERSION:返回當前sqlserver服務器安裝日期、版本,以及處理器的類型。