日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

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

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

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

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

掃碼添加小助手

加入工程師交流群

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

基本概念

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

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

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

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

因?yàn)檫@里重點(diǎn)講到T-SQL查詢語句,所以這里只講批處理段(Batch).

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

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

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

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

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

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

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

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

下面對(duì)上述關(guān)鍵字進(jìn)行挨個(gè)講解

BEGIN…END關(guān)鍵字

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

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

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

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

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

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

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

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

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

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

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

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

GOTO關(guān)鍵字

GOTO關(guān)鍵字因?yàn)槟艽騺y程序的整個(gè)流程而在高級(jí)語言中臭名卓著。GOTO關(guān)鍵字的使用非常簡(jiǎn)單,定義一個(gè)跳轉(zhuǎn)標(biāo)簽,只要GOTO 標(biāo)簽名就可以。如果說一定要使用GOTO關(guān)鍵字的話,最佳實(shí)踐是只使用在錯(cuò)誤處理上,比如:

RETURN關(guān)鍵字

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

簡(jiǎn)單的Return概念如下例子:

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

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

WAITFOR關(guān)鍵字

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

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

簡(jiǎn)單的語法例子如下:

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

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

總結(jié)

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

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

    關(guān)注

    1

    文章

    807

    瀏覽量

    46964
  • 數(shù)據(jù)庫
    +關(guān)注

    關(guān)注

    7

    文章

    4085

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

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

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

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

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

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

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

    芯趨勢(shì) | AI 在制程控制中的演進(jìn):從基礎(chǔ) SPC 到智能體 AI 系統(tǒng)

    半導(dǎo)體行業(yè)正經(jīng)歷一場(chǎng)由AI主導(dǎo)的制程控制革命!從沿用多年的傳統(tǒng)統(tǒng)計(jì)方法,到如今復(fù)雜的智能體協(xié)同系統(tǒng),每一步演進(jìn)都在改寫行業(yè)的效率與控制規(guī)則。要知道,在統(tǒng)計(jì)制程控制(SPC)、先進(jìn)制
    的頭像 發(fā)表于 12-16 10:24 ?977次閱讀
    芯趨勢(shì) | AI 在制<b class='flag-5'>程控制</b>中的演進(jìn):從基礎(chǔ) SPC 到智能體 AI <b class='flag-5'>系統(tǒng)</b>

    條件的執(zhí)行語句

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

    C語言的分支結(jié)構(gòu)介紹

    1.簡(jiǎn)單if語句 C語言中的分支結(jié)構(gòu)語句中的if條件語句。 簡(jiǎn)單if語句的基本結(jié)構(gòu)如下: 代碼語言:javascript if(表達(dá)式) { 執(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)網(wǎng),實(shí)現(xiàn)倍福(BECKHOFF)PLC對(duì)接SQL數(shù)據(jù)庫,上報(bào)和查詢數(shù)據(jù)的案例

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

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

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

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

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

    Unicore標(biāo)準(zhǔn)NEMA語句GSA及說明

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

    是德示波器MSOX3054T遠(yuǎn)程控制自動(dòng)化測(cè)試

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

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

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

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

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

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

    IF 語句是編程中最基本和最重要的控制結(jié)構(gòu)之一,它的主要作用是根據(jù)條件決定程序的執(zhí)行路徑,IF 語句是編程中實(shí)現(xiàn)邏輯判斷和決策的基礎(chǔ)。
    的頭像 發(fā)表于 05-24 15:01 ?2201次閱讀
    詳解TIA Portal SCL編程語言中的IF<b class='flag-5'>語句</b>
    温泉县| 佛冈县| 邻水| 安平县| 涡阳县| 遵化市| 尼勒克县| 山西省| 邯郸县| 临安市| 横山县| 稷山县| 华亭县| 乡宁县| 长子县| 石景山区| 炎陵县| 昌江| 安岳县| 乐亭县| 隆化县| 曲阜市| 瑞昌市| 金塔县| 驻马店市| 包头市| 靖边县| 张北县| 石景山区| 图们市| 荥经县| 济宁市| 松潘县| 化州市| 峡江县| 崇明县| 正定县| 永善县| 治县。| 公安县| 东港市|