T-SQL 變量

T-SQL變量ide

變量的種類:函數

  在T-SQL中,變量按生存範圍能夠分爲全局變量(Global Variable)和局部變量(Local Variable)spa

  一、全局變量是由系統定義的,在整個SQL Server實例內都能訪問到的變量,所有變量以@@開頭,用戶只能訪問,不能賦值。生命週期

  二、局部變量由用戶定義,生命週期只在一個批處理內有效。局部變量以@做爲第一個字符,由用戶本身定義和複製。內存

  示例:it

  DECLARE@iint--聲明一個int類型局部變量SET@i=10--經過SET對局部變量進行賦值DECLARE@Namenvarchar(20)    --聲明一個nvarchar(20)類型變量SET@Name='張飛'PRINT@@VERSION--所有變量,只能讀取,不能賦值SET@@VERSION='123'--此行代碼報錯class

局部變量的用途:變量

  •   在循環中記錄循環次數select

  •   儲存存儲過程或者函數的返回值循環

局部變量的聲明:

  局部變量的聲明必須以"DECLARE"做爲關鍵字,變量的命名必須以"@"做爲變量名的第一個字符.必須爲所聲明的變量提供一個數據類型和數據長度。

  如:

  DECLARE@Namenvarchar(20)

  注意:局部變量的數據類型不能爲Text,ntext,和Image類型,當對於字符型變量只提供數據類型沒有提供數據長度時,數據長度默認爲1.

  設置變量中的值:

一、使用SET設置變量

  有兩種設置變量值方法。可使用SELECE語句或者SET語句。從功能上看,它們的做用幾乎是相同的,不一樣的是SELECT語句容許元數據值來自SELECT語句中的某一列。

  DECLARE@iint,@jintset@i=10;  set@j=20;  select@i+@j

  用查詢到的值設置變量:

  DECLARE@iintSET@i= (selectMAX(Age) from Person)  --當使用SET時若是返回結果有多行也會報錯。同時若是返回多條記錄也報錯SELECT@i

二、使用SELECT設置變量:

   當變量中存儲的信息來源於查詢時,常常使用SELECT給變量賦值,語法比較簡便。

  DECLARE@iintSELECT@i=100SELECT@i

  查詢的信息爲變量賦值:

DECLARE@iintSELECT@i= Age from Person_1 orderby Id desc--當返回多個值時用最後一個賦值PRINT@i

  SELECT同時設置多個值:

  DECLARE@Namevarchar(20)  DECLARE@iintSELECT@i=10, @Name='張飛'

三、當表達式未返回值時

  •   使用SET對局部變量賦值時,若是賦值表達式未返回值,則局部變量變爲NULL,而SELECT對錶達式賦值時,若是表達式未返回值,則局部變量保持原值。

  •    一切只聲明沒有賦值的局部變量的初始值都爲」NULL」。

  例如:

  DECLARE@Namenvarchar(50)   SET@Name='黃飛鴻'select@Name= Name from Person_1 where Id =100--100不存在記錄,此處若是改成一個Id存在的,且Name列不爲null的值,則@Name變量的值就變了PRINT@Name  --依然打印的是黃飛鴻

  可見,當SELECT表達式賦值時,若是爲返回值,則保持原值。

局部表變量:

  局部表變量是一個特殊的局部變量.和臨時表不一樣,局部表變量具備一切局部變量的特色.在查詢中,由於局部表變量是存在內存中,而不是硬盤中,因此速度會遠遠快於臨時表或是實際表,局部表變量最多的使用時在查詢中充當多個表作鏈接時的中間表。

DECLARE@TempTableTABLE    --聲明一個局部表變量(    Id int,    Name nvarchar(50))INSERTINTO@TempTable     --用查詢到的做爲數據插入到局部表變量SELECT Id,Name FROM Person_1SELECT*FROM@TempTable--和普通表同樣用,能夠各類join,子查詢等等。

相關文章
相關標籤/搜索