T SQL 之區域性變數(1)

2021-07-27 06:40:05 字數 2780 閱讀 4456

變數的種類:

在t-sql中,變數按生存範圍可以分為全域性變數(global variable)和區域性變數(local variable)

1、全域性變數是由系統定義的,在整個sql server例項內都能訪問到的變數,全部變數以@@開頭,使用者只能訪問,不能賦值。

2、區域性變數由使用者定義,生命週期只在乙個批處理內有效。區域性變數以@作為第乙個字元,由使用者自己定義和複製。

示例:

declare

@iint

--宣告乙個int型別區域性變數

set@i

=10--通過set對區域性變數進行賦值

declare

@name

nvarchar(20) --宣告乙個nvarchar(20)型別變數

set@name='

張飛'print

@@version--全部變數,只能讀取,不能賦值

set@@version=

'123

'--此行**報錯

區域性變數的用途:

區域性變數的宣告:

區域性變數的宣告必須以"declare"作為關鍵字,變數的命名必須以"@"作為變數名的第乙個字元.必須為所宣告的變數提供乙個資料型別和資料長度。

如:

declare

@name

nvarchar(20)

注意:區域性變數的資料型別不能為text,ntext,和image型別,當對於字元型變數只提供資料型別沒有提供資料長度時,資料長度預設為1.

設定變數中的值:

1、使用set設定變數

有兩種設定變數值方法。可以使用selece語句或者set語句。從功能上看,它們的作用幾乎是相同的,不同的是select語句允許元資料值來自select語句中的某一列。

declare

@iint,@j

intset@i=

10;

set@j=

20;

select@i+

@j

用查詢到的值設定變數:

declare

@iint

set@i

= (select

max(age) from

person)  --當使用set時如果返回結果有多行也會報錯。同時如果返回多條記錄也報錯

select

@i

2、使用select設定變數:

當變數中儲存的資訊**於查詢時,經常使用select給變數賦值,語法比較簡便。

declare

@iint

select@i=

100

select

@i

查詢的資訊為變數賦值:

declare

@iint

select

@i= age from person_1 order

by id desc

--當返回多個值時用最後乙個賦值

print

@i

select同時設定多個值:

declare

@name

varchar(20)

declare

@iint

select@i=

10, @name='

張飛'

3、當表示式未返回值時

例如:

declare

@name

nvarchar(50)

set@name='

黃飛鴻'

select

@name

= name from person_1 where id =

100--100不存在記錄,此處如果改為乙個id存在的,且name列不為null的值,則@name變數的值就變了

print

@name  --依然列印的是黃飛鴻

可見,當select表示式賦值時,如果為返回值,則保持原值。

區域性表變數:

區域性表變數是乙個特殊的區域性變數.和臨時表不同,區域性表變數具有一切區域性變數的特點.在查詢中,因為區域性表變數是存在記憶體中,而不是硬碟中,所以速度會遠遠快於臨時表或是實際表,區域性表變數最多的使用時在查詢中充當多個表做連線時的中間表。

declare

@temptable

table    --宣告乙個區域性表變數

( id

int,

name

nvarchar(50)

)insert

into

@temptable     --用查詢到的作為資料插入到區域性表變數

select id,name from

person_1

select

*from

@temptable

--和普通表一樣用,可以各種join,子查詢等等。

成員變數 區域性變數

成員變數 作為類的成員而存在,直接存在於類中。所有類的成員變 量可以通過this來引用。區域性變數 作為方法或語句塊的成員而存在,存在於方法的引數列表和方法定義中。1.成員變數可以被 public,protect,private,static等修飾符修飾,而 區域性變數不能被控制修飾符及 stati...

成員變數 區域性變數

一.相同點 1.都遵循變數的宣告格式 修飾符 資料型別 變數名 初始化值 2.都有各自的作用域 二.不同點 1.宣告的位置不同 成員變數 宣告在類內,方法外。區域性變數 宣告在方法內 方法的形參部分 塊內 2.成員變數的修飾符有四個 public private protected 預設 區域性變數...

靜態區域性變數

在區域性變數前加上 static 關鍵字,就成了靜態區域性變數。靜態區域性變數存放在記憶體的全域性資料區。函式結束時,靜態區域性變數不會消失,每次該函式呼叫時,也不會為其重新分配空間。它始終駐留在全域性資料區,直到程式執行結束。靜態區域性變數的初始化與全域性變數類似 如果不為其顯式初始化,則c 自動...