變量
數據在內存中存儲可以變化的量叫變量。為了在內存中存儲信息,用戶必須指定存儲信息的單元,並為了該存儲單元命名,
以方便獲取信息,這就是變量的功能。Transact-SQL可以使用兩種變量,一種是局部變量,另外一種是全局變量。
局部變量和全局變量的主要區別在於存儲的數據賬作用范圍不一樣。
1、局部變量
局部變量是用戶可自定義的變量,它的作用范圍僅在程序內部。局部變量的名稱是用戶自定義的,
命名的局部變量名要符合SQLserver2012標識符命名規則,局部變量名必須以@開頭。
1.1、聲明局部變量
語法:
DECLARE { @varaible_name datatype [,...n] }
參數說明:
@varaible_name:局部變量的變量名
datatype:局部變量使用的數據類型,可以除text,ntext,image類型外所有的系統數據類型和用戶自定義數據類型。
例如,聲明變量@testname
SQL語句如下:
declare @testname nvarchar(10)
1.2、為局部變量賦值
為變量賦值的方式一般有兩種,一種是使用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
2、全局變量
全局變量是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服務器安裝日期、版本,以及處理器的類型。