SQL中的全局變量和局部變量(@@/@)


在SQL中,我們常常使用臨時表來存儲臨時結果,對於結果是一個集合的情況,這種方法非常實用,但當結果僅僅是一個數據或者是幾個數據時,還要去建一個表,顯得就比較麻煩,另外,當一個SQL語句中的某些元素經常變化時,比如選擇條件,(至少我想)應該使用局部變量。當然MS SQL Server的全局變量也很有用。


>>>>局部變量 

聲明:DECLARE @local_variable data_type 

@local_variable 是變量的名稱。變量名必須以 at 符 (@) 開頭。data_type 是任何由系統提供的或用戶定義的數據類型。變量不能是 text、ntext 或 image 數據類型。 

示例: 
use master 
declare @SEL_TYPE char(2) 
declare @SEL_CUNT numeric(10) 
set @SEL_TYPE = 'U'/*user table*/ 
set @SEL_CUNT = 10 

/*返回系統中用戶表的數目*/ 
select @SEL_CUNT = COUNT(*) 
from sysobjects 
where type = @SEL_TYPE 

select @SEL_CUNT as 'User table ''s count' 

如果要返回系統表的數目,可以用set @SEL_TYPE = 'S' 

可能這個例子並不能說明使用變量的好處,我只是想說明使用方法。當一組(幾個甚至幾十個)SQL語句都使用某個變量時,就能體會到他的好處了。 

 

 


 


>>>>全局變量 

全局變量是系統預定義的,返回一些系統信息,全局變量以兩個at(@)開頭。下面是我統計了一些較為常用的變量。 

@@CONNECTIONS 
返回自上次啟動以來連接或試圖連接的次數。 

@@CURSOR_ROWS 
返回連接上最后打開的游標中當前存在的合格行的數量(返回被打開的游標中還未被讀取的有效數據行的行數)


@@DATEFIRST 
返回每周第一天的數字 

@@ERROR 
返回最后執行的SQL 語句的錯誤代碼。 

@@FETCH_STATUS 
返回被 FETCH 語句執行的最后游標的狀態,而不是任何當前被連接打開的游標的狀態。 

@@IDENTITY 
返回最后插入的標識值 

@@LANGID 
返回當前所使用語言的本地語言標識符(ID)。 

@@LANGUAGE 
返回當前使用的語言名。 

@@LOCK_TIMEOUT 
返回當前會話的當前鎖超時設置,單位為毫秒。 

@@PROCID 
返回當前過程的存儲過程標識符 (ID) 。 

@@ROWCOUNT 
返回受上一語句影響的行數。 

@@SERVERNAME 
返回運行 的本地服務器名稱。 

@@SPID 
返回當前用戶進程的服務器進程標識符 (ID)。 

@@TRANCOUNT 
返回當前連接的活動事務數。 

@@VERSION 
返回當前安裝的日期、版本和處理器類型。

@@CPU_BUSY
返回自SQL Server 最近一次啟動以來CPU 的工作時間其單位為毫秒

@@DATEFIRST
返回使用SET DATEFIRST 命令而被賦值的DATAFIRST 參數值SET DATEFIRST,命令用來指定每周的第一天是星期幾

@@DBTS
返回當前數據庫的時間戳值必須保證數據庫中時間戳的值是惟一的

@@ERROR
返回執行Transact-SQL 語句的錯誤代碼

@@FETCH_STATUS
返回上一次FETCH 語句的狀態值

@@IDLE
返回自SQL Server 最近一次啟動以來CPU 處於空閉狀態的時間長短單位為毫秒

@@IO_BUSY
返回自SQL Server 最近一次啟動以來CPU 執行輸入輸出操作所花費的時間其單位為毫秒

@@LANGID
返回當前所使用的語言ID 值

@@LANGUAGE
返回當前使用的語言名稱

@@LOCK_TIMEOUT
返回當前會話等待鎖的時間長短其單位為毫秒

@@MAX_CONNECTIONS
返回允許連接到SQL Server 的最大連接數目

@@MAX_PRECISION
返回decimal 和numeric 數據類型的精確度

@@NESTLEVEL
返回當前執行的存儲過程的嵌套級數初始值為0

@@OPTIONS
返回當前SET 選項的信息

@@PACK_RECEIVED
返回SQL Server 通過網絡讀取的輸入包的數目

@@PACK_SENT
返回SQL Server 寫給網絡的輸出包的數目

@@PACKET_ERRORS
返回網絡包的錯誤數目

@@PROCID
返回當前存儲過程的ID 值

@@REMSERVER
返回遠程SQL Server 數據庫服務器的名稱

@@SERVICENAME
返回SQL Server 正運行於哪種服務狀態之下如MSSQLServer MSDTC SQLServerAgent

@@SPID
返回當前用戶處理的服務器處理ID 值

@@TEXTSIZE
返回SET 語句的TEXTSIZE 選項值SET 語句定義了SELECT 語句中text 或image數據類型的最大長度基本單位為字節

@@TIMETICKS
返回每一時鍾的微秒數

@@TOTAL_ERRORS
返回磁盤讀寫錯誤數目

@@TOTAL_READ
返回磁盤讀操作的數目

@@TOTAL_WRITE
返回磁盤寫操作的數目

@@TRANCOUNT
返回當前連接中處於激活狀態的事務數目


免責聲明!

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



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