SQLServer局部變量和全局變量介紹05-29學習筆記


變量

數據在內存中存儲可以變化的量叫變量。為了在內存中存儲信息,用戶必須指定存儲信息的單元,並為了該存儲單元命名,

以方便獲取信息,這就是變量的功能。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服務器安裝日期、版本,以及處理器的類型。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM