<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    啪啪拉拉噼里啪啦

    初學(xué)者天堂資料匯集

      BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
      16 隨筆 :: 73 文章 :: 16 評(píng)論 :: 0 Trackbacks
    SQL 流程控制命令
    作者:unknown 更新時(shí)間:2005-03-17  
     


    Transact-SQL 語言使用的流程控制命令與常見的程序設(shè)計(jì)語言類似主要有以下幾種控制命令。

    4.6.1 IF…ELSE
    其語法如下:
    IF <條件表達(dá)式>
    <命令行或程序塊>
    [ELSE [條件表達(dá)式]
    <命令行或程序塊>]
    其中<條件表達(dá)式>可以是各種表達(dá)式的組合,但表達(dá)式的值必須是邏輯值“真”或“假”。ELSE子句是可選的,最簡單的IF語句沒有ELSE子句部分。IF…ELSE用來判斷當(dāng)某一條件成立時(shí)執(zhí)行某段程序,條件不成立時(shí)執(zhí)行另一段程序。如果不使用程序塊,IF或ELSE只能執(zhí)行一條命令。IF…ELSE可以進(jìn)行嵌套。

    例4-9
    declare@x int,@y int,@z int
    select @x=1,@y=2, @z=3
    if@x>@y
      print'x>y' --打印字符串'x>y'
    else if@y>@z
    print'y>z'
        else print'z>y'
    運(yùn)行結(jié)果如下
    z>y
    注意:在Transact-SQL中最多可嵌套32級(jí)。

    4.6.2 BEGIN…END
    其語法如下:
    BEGIN
    <命令行或程序塊>
    END
    BEGIN…END用來設(shè)定一個(gè)程序塊,將在BEGIN…END內(nèi)的所有程序視為一個(gè)單元執(zhí)行BEGIN…END經(jīng)常在條件語句,如IF…ELSE中使用。在BEGIN…END中可嵌套另外的BEGIN…END來定義另一程序塊。

    4.6.3 CASE
    CASE 命令有兩種語句格式:
    CASE <運(yùn)算式>
    WHEN <運(yùn)算式>THEN<運(yùn)算式>

    WHEN<運(yùn)算式>THEN<運(yùn)算式>
    [ELSE<運(yùn)算式>]
    END

    CASE
    WHEN <條件表達(dá)式> THEN <運(yùn)算式>
    WHEN <條件表達(dá)式> THEN <運(yùn)算式>
    [ELSE <運(yùn)算式>]
    END
    CASE命令可以嵌套到SQL命令中。
    例4-10:調(diào)整員工工資,工作級(jí)別為“1”的上調(diào)8%,工作級(jí)別為“2”的上調(diào)7%,工作級(jí)別為“3”的上調(diào)6%,其它上調(diào)5%。
    use pangu
    update employee
    set e_wage =
    case
    when job_level = ’1’ then e_wage*1.08
    when job_level = ’2’ then e_wage*1.07
    when job_level = ’3’ then e_wage*1.06
    else e_wage*1.05
    end
    注意:執(zhí)行CASE子句時(shí),只運(yùn)行第一個(gè)匹配的子名。

    4.6.4 WHILE…CONTINUE…BREAK
    其語法如下:
    WHILE <條件表達(dá)式>
    BEGIN
    <命令行或程序塊>
    [BREAK]
    [CONTINUE]
    [命令行或程序塊]
    END
    WHILE 命令在設(shè)定的條件成立時(shí)會(huì)重復(fù)執(zhí)行命令行或程序塊。CONTINUE命令可以讓程序跳過CONTINUE 命令之后的語句,回到WHILE 循環(huán)的第一行命令。BREAK 命令則讓程序完全跳出循環(huán),結(jié)束WHILE 命令的執(zhí)行。WHILE 語句也可以嵌套。

    例4-11:
    declare @x int @y int @c int
    例4-11:
    declare @x int, @y int, @c int
    select @x = 1, @y=1
    while @x < 3
    begin
    print @x --打印變量x 的值
    while @y < 3
    begin
    select @c = 100*@ x+ @y
    print @c --打印變量c 的值
    select @y = @y + 1
    end
    select @x = @x + 1
    select @y = 1
    end
    運(yùn)行結(jié)果如下
    1
    101
    102
    2
    201
    202

    4.6.5 WAITFOR
    其語法如下:
    WAITFOR {DELAY <‘時(shí)間’> | TIME <‘時(shí)間’>
    | ERROREXIT | PROCESSEXIT | MIRROREXIT}
    WAITFOR 命令用來暫時(shí)停止程序執(zhí)行,直到所設(shè)定的等待時(shí)間已過或所設(shè)定的時(shí)間已到才繼續(xù)往下執(zhí)行。其中‘時(shí)間’必須為DATETIME 類型的數(shù)據(jù),如:‘11:15:27’,
    但不能包括日期各關(guān)鍵字含義如下:

    • DELAY 用來設(shè)定等待的時(shí)間最多可達(dá)24 小時(shí);
    • TIME 用來設(shè)定等待結(jié)束的時(shí)間點(diǎn);
    • ERROREXIT 直到處理非正常中斷;
    • PROCESSEXIT 直到處理正常或非正常中斷;
    • MIRROREXIT 直到鏡像設(shè)備失敗。

    例4-12 等待1 小時(shí)2 分零3 秒后才執(zhí)行SELECT 語句
    waitfor delay ’01:02:03’
    select * from employee

    例4-13:等到晚上11 點(diǎn)零8 分后才執(zhí)行SELECT 語句
    waitfor time ’23:08:00’
    select * from employee

    4.6.6 GOTO
    語法如下:
    GOTO 標(biāo)識(shí)符
    GOTO 命令用來改變程序執(zhí)行的流程,使程序跳到標(biāo)有標(biāo)識(shí)符的指定的程序行再繼續(xù)往下執(zhí)行。作為跳轉(zhuǎn)目標(biāo)的標(biāo)識(shí)符可為數(shù)字與字符的組合,但必須以“:”結(jié)尾,如‘12:’或‘a(chǎn)_1:’。在GOTO 命令行,標(biāo)識(shí)符后不必跟“:”。
    例4-14 分行打印字符‘1’、‘2’、‘3’、‘4’、‘5’
    declare @x int
    select @x = 1
    label_1
    print @x
    select @x = @x + 1
    while @x < 6
    goto label_1

    4.6.7 RETURN
    語法如下
    RETURN [整數(shù)值]
    RETURN 命令用于結(jié)束當(dāng)前程序的執(zhí)行,返回到上一個(gè)調(diào)用它的程序或其它程序。在括號(hào)內(nèi)可指定一個(gè)返回值。
    例4-15
    declare @x int @y int
    select @x = 1 @y = 2
    if x>y
    return 1
    else
    return 2
    如果沒有指定返回值,SQL Server 系統(tǒng)會(huì)根據(jù)程序執(zhí)行的結(jié)果返回一個(gè)內(nèi)定值,如
    表4-5 所示。


    如果運(yùn)行過程產(chǎn)生了多個(gè)錯(cuò)誤,SQL Server系統(tǒng)將返回絕對(duì)值最大的數(shù)值;如果此時(shí)用戶此時(shí)定義了返回值,則以返回用戶定義的值。RETURN語句不能返回NULL值。

     
    posted on 2005-04-07 14:00 噼里啪啦的世界 閱讀(211) 評(píng)論(0)  編輯  收藏 所屬分類: 數(shù)據(jù)庫
    主站蜘蛛池模板: 免费人成在线观看网站品爱网 | 国产精品免费视频播放器| 亚洲视频一区网站| 日本高清免费网站| 亚洲中文字幕无码久久2020 | 97人妻无码一区二区精品免费| 久久亚洲AV无码精品色午夜麻| 你懂的网址免费国产| 久久亚洲精品中文字幕三区| 国产成人免费ā片在线观看老同学 | 亚洲AV日韩精品久久久久久| 久久久久久久99精品免费观看| 亚洲成a人片在线观看日本| 性xxxxx大片免费视频| 78成人精品电影在线播放日韩精品电影一区亚洲| 91在线免费观看| 91久久亚洲国产成人精品性色| A在线观看免费网站大全| 亚洲依依成人亚洲社区| 国产成人3p视频免费观看| CAOPORM国产精品视频免费| 婷婷亚洲综合五月天小说| 最近高清中文字幕无吗免费看| 亚洲欧美中文日韩视频| 亚洲国产成人爱av在线播放| 拍拍拍无挡视频免费观看1000| 亚洲黄色网站视频| 国产无遮挡裸体免费视频| 久久精品无码免费不卡| 亚洲精品在线免费观看视频| 韩国18福利视频免费观看| 国产精品免费一区二区三区| 久久精品国产亚洲AV无码偷窥| 毛片免费vip会员在线看| 无码日韩人妻AV一区免费l| 亚洲AV无码AV男人的天堂| 可以免费看黄视频的网站| 一区二区三区免费在线视频| 亚洲AV日韩精品久久久久| 国产一区二区三区在线免费观看 | 99久久成人国产精品免费|