transact-sql中可以使用兩種變數,一種是區域性變數(local variable)另外一種是全域性變數(global variable)。
區域性變數是使用者可自定義的變數,它的作用範圍僅在程式內部。在程式中通常用來儲存從表中查詢到的資料,或當作程式執行過程中暫存變數使用。區域性變數必須以「@」開頭,而且必須先用declare命令說明後才可使用。其說明形式如下:
declare @變數名 變數型別 [@變數名 變數型別…]
其中變數型別可以是sql server 2000支援的所有資料型別,也可以是使用者自定義的資料型別。declare命令的詳細用法請參見「4.6其它命令」。
在transact-sql中不能像在一般的程式語言中一樣使用「變數=變數值」來給變數賦值。必須使用select或set命令來設定變數的值。
其語法如下:
select@區域性變數=變數值
set @區域性變數=變數值
例4-1:宣告乙個長度為10 個字元的變數「id」並賦值
declare@id char(10)
select@id=『10010001』
注意:可以在select命令查詢資料時,在select命令中直接將列值賦給變數。
例4-2:查詢編號為「10010001」的員工姓名和工資,將其分別賦予變數name和wage。
declare@name char(30),@wage money
--申明
select@name=
e_name,
@wage=
e_wage
from employee
where emp_id='10010001'
select@name as e_name,@wage as e_wage
執行結果如下:
e_name e_wage
------------------------------ -----------
張三 8000.0000
注意:資料庫語言和程式語言有一些關鍵字,關鍵字是在某一一樣下能夠促使某一操作發生的字元組合,為避免衝突和產生錯誤,在命令表、列、變數以及其它物件時應避免使用關鍵字。有關sql server的關鍵字請參見附錄。
全域性變數是sql server系統內部使用的變數,其作用範圍並不侷限於某一程式,而是任何程式均可隨時呼叫全域性變數通常儲存一些sql server的配置設定值和效能統計資料。使用者可在程式中用全域性變數來測試系統的設定值或transact-sql命令執行後的狀態值。有關sql server 全域性變數的詳細情況請參見附錄。
注意:全域性變數不是由使用者的程式定義的,它們是在伺服器級定應義的。只能使用預先說明及定義的變局變數。引用全域性變數時,必須以「@@」開頭。區域性變數的名稱不能與全域性變數的名稱相同、否則會在應用中出錯。
全域性變數 靜態全域性變數 靜態區域性變數 區域性變數
全域性和靜態變數都在堆裡。這句話應該錯了,應該是放在常量資料段 全域性變數的作用範圍是整個程式 如果程式是多個檔案,必須在其他的檔案中說明 靜態變數的作用範圍要看靜態變數的位置,如果在函式裡,則作用範圍 就是這個函式。靜態全域性變數,只在本檔案可以用,雖然整個程式包含多個檔案,但靜態全域性變數只能用...
全域性變數 靜態全域性變數 靜態區域性變數 區域性變數
全域性和靜態變數都在堆裡。全域性變數的作用範圍是整個程式 如果程式是多個檔案,必須在其他的檔案中說明 靜態變數的作用範圍要看靜態變數的位置,如果在函式裡,則作用範圍 就是這個函式。靜態全域性變數,只在本檔案可以用,雖然整個程式包含多個檔案,但靜態全域性變數只能用在定義它的那個檔案裡,卻不能用在程式中...
全域性變數 靜態全域性變數區域性變數 靜態區域性變數
對於乙個完整的程式,在記憶體中的分布情況如下圖 區 low address 全域性資料區 堆區 棧區 high address 一般程式把新產生的動態資料存放在堆區,函式內部的自動變數存放在棧區。自動變數一般會隨著函式的退出而釋放空間,靜態資料 即使是函式內部的靜態區域性變數 也存放在全域性資料區。...