SQL中的全域性變數和區域性變數( )

2021-09-07 13:21:05 字數 3019 閱讀 6496

在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

返回當前連線中處於啟用狀態的事務數目

SQL中的全域性變數和區域性變數( )

在sql中,我們常常使用臨時表來儲存臨時結果,對於結果是乙個集合的情況,這種方法非常實用,但當結果僅僅是乙個資料或者是幾個資料時,還要去建乙個表,顯得就比較麻煩,另外,當乙個sql語句中的某些元素經常變化時,比如選擇條件,至少我想 應該使用區域性變數。當然ms sql server的全域性變數也很有...

全域性變數和區域性變數

全域性變數 可以被不同的函式 類或檔案呼叫的變數,在函式外定義。區域性變數 只能在函式內使用,定義在函式內。區域性變數的使用 class myclass def myfun num 12 print myfun num num 正確 def myfun2 num num 1 print mufun ...

全域性變數和區域性變數

區域性變數 在方法中開闢的變數,只在方法中有效 區域性變數在定義時不會初始化,要顯式的給它乙個值 如未給它乙個初始值,雖然編譯的時候會通過,但是執行的時候會產生為初始化錯誤!方法呼叫 執行完,區域性變數便會自動釋放。在方法內的語句塊中建立的變數在編譯時假如未初始,如若使用,也會報未初始化錯誤!呼叫的...