T-SQL查詢進階--變量
概述
變量對于一種語言是必不可少的一部分,當然,對于T-SQL來講也是一樣。在簡單查詢中,往往很少用到變量,但無論對于復雜的查詢或存儲過程中,變量都是必不可少的一部分.
變量的種類
在T-SQL中,變量按生存范圍可以分為全局變量(Global Variable)和局部變量(Local Variable).
1.全局變量是由系統定義的,在整個SQL SERVER實例內都能訪問到的變量.全局變量以@@作為***個字符,用戶只能訪問,不能賦值。
2.局部變量由用戶定義,生命周期只在一個批處理內有效。局部變量以@作為***個字符,由用戶自己定義和賦值。
一個簡單的例子如下
因為全局變量僅僅是用于讀取系統的一些參數,具體每個全局變量所代表的含義請Google之…本文主要介紹局部變量(也就是用戶自定義變量).
局部變量的用途
在T-SQL中,局部變量是一個存儲指定數據類型單個值的對象.T-SQL中對變量的定義實際上和大多數高級語言一樣.
局部變量在使用中常常用于以下三種用途:
1.在循環語句中記錄循環的次數或者用于控制循環的次數.
2.用于存儲流程語句來控制流程走向
3.儲存存儲過程或者函數的返回值
實際上,存儲任何業務數據的局部變量都屬于這一類應用.
#p#
局部變量的聲明
局部變量的聲明必須以"DECLEAR"作為關鍵字,變量的命名必須以"@"作為變量名的***個字符.必須為所聲明的變量提供一個數據類型和數據長度.如:
局部變量的數據類型不能為Text,ntext,和Image類型,當對于字符型變量只提供數據類型沒有提供數據長度時,數據長度默認為1.
一切只聲明沒有賦值的局部變量的初始值都為”NULL”.
局部變量的賦值
在T-SQL中,局部變量的賦值是通過”Set”關鍵字和”Select”關鍵字實現的.
實際上,使用Set或者是Select取決于下面幾個因素
1.當對多個變量賦值時
SELECT關鍵字支持多個變量賦值,而SET關鍵字只支持一次對一個值賦值
2.當賦值時表達式返回值的個數
使用SET進行賦值時,當表達式返回多個值時,報錯.而SELECT關鍵字在賦值表達式返回多個值時,取***一個.
比如,假設XXX表只有以下幾條數據:
當使用SELECT關鍵字進行時,可以取返回值的***一個。
3.當表達式未返回值時
使用SET對局部變量賦值時,如果賦值表達式未返回值,則局部變量變為NULL,而SELECT對表達式賦值時,如果表達式未返回值,則局部變量保持原值.
4.當…你是一個標準愛好者時
堅決使用SET關鍵字對局部變量賦值吧,因為SET是ANSI標準……
5.當…你懶得記上述何時使用SET或是何時使用SELECT時
好吧,我承認我也很懶.那你按照一個簡單的方式區別:當你的賦值語句需要引用一個數據源(表)時,使用SELECT.除此之外,使用SET.
#p#
局部表變量
局部表變量是一個特殊的局部變量.和臨時表不同,局部表變量具有一切局部變量的特點.在查詢中,因為局部表變量是存在內存中,而不是硬盤中,所以速度會遠遠快于臨時表或是實際表,局部表變量最多的使用時在查詢中充當多個表做連接時的中間表,比如:
這樣會大大提高多表連接的查詢速度.
總結
本文介紹了變量種類以及局部變量的使用范圍,定義以及賦值方法.還簡單介紹了表變量。在復雜查詢中,系統的了解T-SQL的變量是寫出好的查詢語句必不可少的一部分。
原文鏈接:http://www.cnblogs.com/CareySon/archive/2011/10/11/2207330.html
【編輯推薦】