成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

T-SQL查詢進(jìn)階之流程控制語句詳解

數(shù)據(jù)庫 SQL Server
本文我們主要介紹了T-SQL用于流程控制的語句以及用于流程控制語句的8個關(guān)鍵字及它們的使用,希望能夠?qū)δ兴鶐椭?/div>

T-SQL查詢中用于流程控制的語句是本文我們主要要介紹的內(nèi)容,T-SQL中的流程控制語句進(jìn)一步擴(kuò)展了T-SQL的力量……使得大部分業(yè)務(wù)邏輯可以在數(shù)據(jù)庫層面進(jìn)行。但很多人對T-SQL中的流程控制語句并沒有系統(tǒng)的了解,本篇文章會系統(tǒng)的對T-SQL語句中的流程控制語句進(jìn)行系統(tǒng)講解。

基本概念

在沒有流程控制語句的情況下,T-SQL語句是按照從上到下的順序逐個執(zhí)行:

T-SQL查詢進(jìn)階之流程控制語句詳解

使用流程控制語句可以讓開發(fā)人員可以基于某些邏輯進(jìn)行選擇性的跳轉(zhuǎn),實現(xiàn)了類似高級語言的跳轉(zhuǎn)結(jié)構(gòu):

T-SQL查詢進(jìn)階之流程控制語句詳解 

流程控制語句的使用范圍和GO關(guān)鍵字

流程控制語句只能在單個批處理段(Batch),用戶自定義函數(shù)和存儲過程中使用。不能跨多個批處理段或者用戶自定義函數(shù)和存儲過程。

因為這里重點講到T-SQL查詢語句,所以這里只講批處理段(Batch).

一個批處理段是由一個或者多個語句組成的一個批處理,之所以叫批處理是因為所有語句一次性被提交到一個SQL實例。在這個批處理范圍內(nèi),局部變量是互相可見的。

而想讓多個語句分多次提交到SQL實例,則需要使用GO關(guān)鍵字。GO關(guān)鍵字本身并不是一個SQL語句,GO關(guān)鍵字可以看作是一個批處理結(jié)束的標(biāo)識符,當(dāng)遇到GO關(guān)鍵字時,當(dāng)前GO之前的語句會作為一個批處理直接傳到SQL實例執(zhí)行。所以不在同一個批處理內(nèi)局部變量不可見,也不可對跨批處理的語句使用流程控制語句.

在同一個批處理中局部變量互相可見:

T-SQL查詢進(jìn)階之流程控制語句詳解

在不同批處理中局部變量不可見:

T-SQL查詢進(jìn)階之流程控制語句詳解

在不同批處理中,流程控制語句不能跨批處理:

T-SQL查詢進(jìn)階之流程控制語句詳解

T-SQL中的8個流程控制語句關(guān)鍵字

在T-SQL中,與流程控制語句相關(guān)的關(guān)鍵字有8個:

BEGIN...END

BREAK

GOTO

CONTINUE

IF...ELSE

WHILE

RETURN

WAITFOR

下面對上述關(guān)鍵字進(jìn)行逐個講解:

BEGIN…END關(guān)鍵字

BEGIN…END關(guān)鍵字也是流程控制語句需要用到的最基本關(guān)鍵字,用于將多個語句劃分成邏輯上的一部分。其實可以直接理解成類C語言中的花括號(“{}"“)

T-SQL查詢進(jìn)階之流程控制語句詳解

WHILE/BREAK/CONTINUE關(guān)鍵字

在T-SQL的流程控制語句中,循環(huán)語句只有WHILE循環(huán),并沒有傳統(tǒng)高級語言的FOR和SWITCH循環(huán)。WHILE除了被用于流程控制語句的循環(huán)之外,還經(jīng)常被用于游標(biāo)之中。

WHILE關(guān)鍵字和高級語言中的WHILE關(guān)鍵字幾乎完全一樣。WHILE循環(huán)中可以利用BREAK和CONTINUE關(guān)鍵字對循環(huán)進(jìn)行控制。

CONTINUE關(guān)鍵字:用于結(jié)束本次循環(huán),直接開始下一次循環(huán)。

BREAK關(guān)鍵字:用于直接跳出WHILE循環(huán)語句。

這里值得注意的是,當(dāng)WHILE循環(huán)嵌套時,CONTINUE關(guān)鍵字和BREAK關(guān)鍵字只會作用于它們所處的WHILE循環(huán)之內(nèi),不會對外部WHILE循環(huán)產(chǎn)生作用。

一個簡單的例子如下:從1循環(huán)到10,當(dāng)循環(huán)到7時,結(jié)束本次循環(huán)并繼續(xù),當(dāng)循環(huán)到8時,跳出循環(huán)

T-SQL查詢進(jìn)階之流程控制語句詳解

IF..ELSE關(guān)鍵字

IF..ELSE關(guān)鍵字實現(xiàn)了非此既彼的邏輯。和高級語言中的IF..ELSE具有完全一樣的使用方法,這里就不再講述了,例子參看上圖。

還有要注意的是IF經(jīng)常會和EXISTS關(guān)鍵字相結(jié)合來查看數(shù)據(jù)表中指定的數(shù)據(jù)是否存在,比如:

我想查詢員工中沒有上級的人,如果有這個人,則輸出“XXX is our boss”,如果沒有,則輸出"There is no infomation about our boss”

T-SQL查詢進(jìn)階之流程控制語句詳解

GOTO關(guān)鍵字

GOTO關(guān)鍵字因為能打亂程序的整個流程而在高級語言中臭名卓著。GOTO關(guān)鍵字的使用非常簡單,定義一個跳轉(zhuǎn)標(biāo)簽,只要GOTO 標(biāo)簽名就可以。如果說一定要使用GOTO關(guān)鍵字的話,最佳實踐是只使用在錯誤處理上,比如:

T-SQL查詢進(jìn)階之流程控制語句詳解

RETURN關(guān)鍵字

Return是最簡單有效直接無條件告訴服務(wù)器跳出某個批處理段(Batch),用戶自定義函數(shù)和存儲過程的方式。在同一個批處理中Return關(guān)鍵字直接截止當(dāng)前Return所在的批處理(Batch),批處理有關(guān)概念請參考前面GO關(guān)鍵字那一節(jié).

簡單的Return概念如下例子:

T-SQL查詢進(jìn)階之流程控制語句詳解

在存儲過程中,Return語句后面可以返回數(shù)字用于返回執(zhí)行狀態(tài)或者錯誤代碼。

很多人會把Return語句和RAISERROR函數(shù)搞混,區(qū)別在于RAISERROR函數(shù)會引發(fā)錯誤,并且程序依然會往下執(zhí)行:

T-SQL查詢進(jìn)階之流程控制語句詳解

WAITFOR關(guān)鍵字

WAITFOR關(guān)鍵字允許指定語句在特定時間或是推遲特定時間執(zhí)行。

推遲等待和在特定時間執(zhí)行的語法分別是WAITFOR DELAY ‘需要等待的執(zhí)行時間',WAITFOR TIME ‘需要執(zhí)行程序的精確時間’

簡單的語法例子如下:

T-SQL查詢進(jìn)階之流程控制語句詳解

WAITFOR的功能可以實現(xiàn)更為復(fù)雜的業(yè)務(wù)邏輯,比如:

我想開始一項促銷活動,在當(dāng)前時間10小時后開始,為8折,20小時后結(jié)束,變?yōu)?折:

T-SQL查詢進(jìn)階之流程控制語句詳解

總結(jié)

本篇文章從T-SQL查詢的角度講解了流程控制語句的8個關(guān)鍵字。利用好這些關(guān)鍵字是掌握復(fù)雜T-SQL查詢的必要條件。

以上就是就是T-SQL數(shù)據(jù)庫查詢中用于流程控制的語句以及它的關(guān)鍵詞的用法的全部內(nèi)容,希望本次的介紹能夠?qū)δ兴斋@!

【編輯推薦】

  1. SQL Server 2008 MDX應(yīng)用之組裝有序集合
  2. SQL Server 2008中的代碼安全之主密鑰詳解
  3. SQL Server 2008 MDX應(yīng)用之檢索集合中的元組
  4. SQL Server 2005/2008中的CTE應(yīng)用之遞歸查詢
  5. 淺析SQL Server數(shù)據(jù)庫SSIS導(dǎo)入IIS日志的簡單步驟
責(zé)任編輯:趙鵬 來源: 博客園
相關(guān)推薦

2011-08-24 16:36:00

T-SQL

2011-10-19 10:07:16

T-SQL查詢變量

2010-07-20 13:52:27

SQL Server

2011-07-18 14:38:44

子查詢外部查詢

2010-10-19 16:06:26

SQL Server索

2024-06-06 09:09:41

SQL循環(huán)控制命令

2010-05-11 12:53:58

Unix awk

2010-12-06 09:26:23

SQL Server

2011-08-12 10:31:01

T-SQL查詢基于列的邏輯表達(dá)式

2009-09-04 10:42:56

C#流程控制語句

2011-03-31 09:30:27

SQL Server數(shù)管理SQL

2010-07-19 10:11:58

Perl流程控制語句

2024-11-01 16:05:26

2024-11-05 12:59:42

while 循環(huán)迭代字節(jié)碼

2015-07-23 15:17:37

JavaScript循環(huán)語句

2011-10-09 16:40:50

T-SQL

2010-07-06 10:36:35

SQL Server

2017-05-31 17:09:52

LinuxShell命令

2023-08-15 08:26:34

SQL Server查找死鎖

2016-08-29 20:51:16

awkLinux開源
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 国产精品不卡 | 中文字幕成人av | 久久久综合久久 | 天天天天天天操 | a视频在线播放 | 久久一区视频 | 成人高清在线 | av在线播放网址 | 久草在线 | 成年人网站免费 | 国产一区二区三区视频 | 久久久国产一区二区三区四区小说 | 91久久国产综合久久 | 日韩在线免费电影 | 久久国产一区二区 | 国产精品观看 | 亚洲精品久久久蜜桃 | 色姑娘综合网 | 国产区精品视频 | 国产精品久久久久久久 | 欧洲国产精品视频 | 麻豆久久久9性大片 | 久久久免费毛片 | 丁香五月网久久综合 | 国产成人一区二区三区精 | 米奇7777狠狠狠狠视频 | 看片wwwwwwwwwww | 成年人免费看的视频 | 激情毛片 | 国产亚洲黄色片 | 国产精品视频在线观看 | 99视频在线免费观看 | 日日做夜夜爽毛片麻豆 | 久久av一区二区三区 | 国产精品视频网 | 高清欧美性猛交xxxx黑人猛交 | 日日想夜夜操 | 欧美成视频 | 日韩一区二区久久 | 亚洲协和影视 | 国产精品乱码一区二区三区 |