<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      T-SQL查詢進階--流程控制語句

      概述

           和其他高級語言一樣,T-SQL中也有用于控制流程的語句。T-SQL中的流程控制語句進一步擴展了T-SQL的力量……使得大部分業(yè)務邏輯可以在數(shù)據(jù)庫層面進行。但很多人對T-SQL中的流程控制語句并沒有系統(tǒng)的了解,本篇文章會系統(tǒng)的對T-SQL語句中的流程控制語句進行系統(tǒng)講解。

       

      基本概念

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

           1

          

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

           2 

       

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

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

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

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

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

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

           3-1

       

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

          3-2

       

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

          3-3

          

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

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

       

      BEGIN...END

      BREAK

      GOTO

      CONTINUE

      IF...ELSE

      WHILE

      RETURN

      WAITFOR

         下面對上述關(guān)鍵字進行挨個講解

       

       

      BEGIN…END關(guān)鍵字

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

          4

       

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

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

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

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

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

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

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

          5

      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”

          6

       

      GOTO關(guān)鍵字

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

          7

       

      RETURN關(guān)鍵字

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

          簡單的Return概念如下例子:

          10

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

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

           11

      WAITFOR關(guān)鍵字

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

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

          簡單的語法例子如下:

          8

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

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

         9

       

      總結(jié)

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

      posted @ 2011-08-23 13:06  CareySon  閱讀(22191)  評論(19)    收藏  舉報
      主站蜘蛛池模板: 欧美激情内射喷水高潮| 亚洲精品人妻中文字幕| 97久久久精品综合88久久| 99热精国产这里只有精品| 黄石市| 国产精品久久久久aaaa| 国产成人高清亚洲综合| 午夜福利在线观看成人| 人成午夜免费大片| 99久久精品国产熟女拳交| 亚洲爆乳WWW无码专区| 国产色视频一区二区三区qq号| 伊人欧美在线| 久久亚洲国产欧洲精品一| 人妻放荡乱h文| 丰满少妇高潮无套内谢| 亚洲区日韩精品中文字幕| 加勒比在线中文字幕一区二区| 中文字幕日韩有码一区| 在线亚洲午夜片av大片| 亚洲日本va午夜在线影院| 国产成人啪精品午夜网站| 综合久青草视频在线观看| 午夜男女爽爽影院免费视频下载| 蜜芽久久人人超碰爱香蕉 | 成人免费A级毛片无码片2022| 黄色一级片一区二区三区| 国产精品国产三级国快看| 波多野结衣在线播放| 亚洲国产欧美日韩另类| 国产亚洲精品成人av久| brazzers欧美巨大| 亚洲av免费成人精品区| 国产激情艳情在线看视频| 雷波县| 白白发布视频一区二区视频| 日韩中文字幕亚洲精品| 日本边吃奶边摸边做在线视频| 亚洲另类丝袜综合网| 亚洲天堂领先自拍视频网| 无码人妻av免费一区二区三区|