chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

T-SQL語句中流程控制語句的系統(tǒng)講解

西西 ? 來源:博客園 ? 作者:宋沄劍 ? 2020-09-22 15:52 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

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

基本概念

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

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

流程控制語句的使用范圍和GO關鍵字

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

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

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

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

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

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

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

T-SQL中的8個流程控制語句關鍵字

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

BEGIN...END BREAK
GOTO CONTINUE
IF...ELSE WHILE
RETURN WAITFOR

下面對上述關鍵字進行挨個講解

BEGIN…END關鍵字

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

WHILE/BREAK/CONTINUE關鍵字

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

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

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

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

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

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

IF..ELSE關鍵字

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

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

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

GOTO關鍵字

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

RETURN關鍵字

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

簡單的Return概念如下例子:

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

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

WAITFOR關鍵字

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

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

簡單的語法例子如下:

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

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

總結

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

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • SQL
    SQL
    +關注

    關注

    1

    文章

    807

    瀏覽量

    46908
  • 數(shù)據(jù)庫

    關注

    7

    文章

    4078

    瀏覽量

    68524
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    MySQL慢查詢調優(yōu)指南

    MySQL慢查詢是數(shù)據(jù)庫性能問題的最常見原因。當一條SQL語句執(zhí)行超過1秒時,就可能影響用戶體驗;超過10秒時,通常會收到用戶投訴;而超過30秒的查詢,往往意味著系統(tǒng)存在嚴重的性能問題。本文從實
    的頭像 發(fā)表于 04-09 10:01 ?159次閱讀

    NineData SQL AI 智能補全上線:寫 SQL,不必每次都從頭敲

    NineData推出SQLAI智能補全功能,通過AI技術實現(xiàn)上下文感知的SQL語句智能提示。該功能不僅能補全關鍵字,還能根據(jù)當前輸入內容預測后續(xù)查詢意圖,顯著提升多表關聯(lián)、復雜條件等場景下的編寫效率
    的頭像 發(fā)表于 04-01 20:19 ?256次閱讀
    NineData <b class='flag-5'>SQL</b> AI 智能補全上線:寫 <b class='flag-5'>SQL</b>,不必每次都從頭敲

    C語言中實現(xiàn)函數(shù)宏的三種方式

    在宏的第一個分號后便結束。即 a = b 和 b = tmp 均不受控制語句所作用。 因此,在工程中,一般使用三種方式來對函數(shù)宏進行封裝,分別為 {}、do{...}while(0
    發(fā)表于 12-29 07:34

    條件的執(zhí)行語句

    條件執(zhí)行語句大多在if語句中使用,也在使用關系運算符(<,==,>等) 或者布爾值表達式(,!等)計算復雜表達式時使用。對于包含函數(shù)調 用的代碼片段,由于函數(shù)返回值會被
    發(fā)表于 12-12 08:25

    C語言的分支結構介紹

    1.簡單if語句 C語言中的分支結構語句中的if條件語句。 簡單if語句的基本結構如下: 代碼語言:javascript if(表達式) { 執(zhí)行代碼塊; } 其語義是:如
    發(fā)表于 11-25 07:48

    GD32F470使用__attribute__語句,keil編譯通過但是scons編譯不通過,為什么?

    問題語句: uint16_t ltdc_lcd_framebuf0[800][480] __attribute__((at(LCD_FRAME_BUF_ADDR))); 上述語句在keil編譯
    發(fā)表于 10-14 06:05

    不用編程不用聯(lián)網,實現(xiàn)倍福(BECKHOFF)PLC對接SQL數(shù)據(jù)庫,上報和查詢數(shù)據(jù)的案例

    消息區(qū)域顯示的狀態(tài)消息;根據(jù)狀態(tài)消息調試。如下圖:智能網關根據(jù)以上配置自動生成SQL語句命令,結合數(shù)據(jù)庫相關參數(shù)對接到服務器,多個SQL語句用\'任務組\'區(qū)分,相同的任務組即為同一個
    發(fā)表于 10-10 11:14

    人工智能行業(yè)如何使用for循環(huán)語句進行循環(huán)

    : 支持range()函數(shù)生成數(shù)字序列 可結合else語句使用 Java中的for循環(huán): 傳統(tǒng)結構:for(初始化; 條件; 增量) 增強for循環(huán):for(類型 變量 : 集合) 主要用于數(shù)組和集合
    的頭像 發(fā)表于 09-10 12:55 ?678次閱讀

    助力工業(yè)物聯(lián)網升級,智能遠程控制系統(tǒng)功不可沒

    在工業(yè)4.0的浪潮中,工業(yè)物聯(lián)網(IIoT)正從概念走向規(guī)?;涞?,而智能遠程控制系統(tǒng)作為其核心組件,如同“神經傳導中樞”,將分散的設備、數(shù)據(jù)與決策端緊密連接??缭綍r空的精準操作,都依賴于智能遠程控制系統(tǒng)
    的頭像 發(fā)表于 08-06 16:23 ?1163次閱讀

    Unicore標準NEMA語句GSA及說明

    本文介紹和芯星通的NEMA語句說明。
    的頭像 發(fā)表于 07-16 11:39 ?816次閱讀
    Unicore標準NEMA<b class='flag-5'>語句</b>GSA及說明

    是德示波器MSOX3054T程控制自動化測試

    實現(xiàn)自動化測試,助力測試流程的智能化升級。 ? 一、MSOX3054T的核心優(yōu)勢:遠程控制的基礎 MSOX3054T示波器具備出色的信號采集與分析能力,其高頻帶寬、高采樣率及深存儲深度
    的頭像 發(fā)表于 07-08 17:09 ?744次閱讀
    是德示波器MSOX3054<b class='flag-5'>T</b>遠<b class='flag-5'>程控制</b>自動化測試

    基礎篇3:掌握Python中的條件語句與循環(huán)

    在Python編程語言中,條件語句和循環(huán)是構成復雜邏輯和數(shù)據(jù)處理的基石。本篇基礎教程將幫助您深入了解Python中的條件語句和循環(huán)結構,讓您能夠更好地控制程序流程。 條件
    發(fā)表于 07-03 16:13

    大促數(shù)據(jù)庫壓力激增,如何一眼定位 SQL 執(zhí)行來源?

    語句成為了性能瓶頸。面對這樣的困境,本篇文章提出了對 SQL 進行 “染色” 的方法來幫助大家 一眼定位問題 SQL,而無需再在多處邏輯中輾轉騰挪 。本文的思路主要受之前郭忠強老師發(fā)布的 如何一眼定位
    的頭像 發(fā)表于 06-10 11:32 ?645次閱讀
    大促數(shù)據(jù)庫壓力激增,如何一眼定位 <b class='flag-5'>SQL</b> 執(zhí)行來源?

    詳解TIA Portal SCL編程語言中的IF語句

    IF 語句是編程中最基本和最重要的控制結構之一,它的主要作用是根據(jù)條件決定程序的執(zhí)行路徑,IF 語句是編程中實現(xiàn)邏輯判斷和決策的基礎。
    的頭像 發(fā)表于 05-24 15:01 ?2111次閱讀
    詳解TIA Portal SCL編程語言中的IF<b class='flag-5'>語句</b>

    深入理解C語言:C語言循環(huán)控制

    在C語言編程中,循環(huán)結構是至關重要的,它可以讓程序重復執(zhí)行特定的代碼塊,從而提高編程效率。然而,為了避免程序進入無限循環(huán),C語言提供了多種循環(huán)控制語句,如break、continue和goto,用于
    的頭像 發(fā)表于 04-29 18:49 ?2201次閱讀
    深入理解C語言:C語言循環(huán)<b class='flag-5'>控制</b>