




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第十二章控制語句知識(shí)點(diǎn)回顧理解PL/SQL功能和特點(diǎn)了解數(shù)據(jù)類型及其用法理解邏輯比較掌握錯(cuò)誤處理2本章目標(biāo)順序結(jié)構(gòu)控制語句選擇結(jié)構(gòu)控制語句if語句Case語句循環(huán)結(jié)構(gòu)控制語句基本loop循環(huán)while循環(huán)for循環(huán)3流程控制順序控制用于按順序執(zhí)行語句可以使用選擇語句和循環(huán)來更改PL/SQL塊的可執(zhí)行部分中的語句的執(zhí)行順序。4選擇結(jié)構(gòu)—IF語句如果一個(gè)條件為TRUE,那么IF語句將決定是否應(yīng)該執(zhí)行一個(gè)語句。IF語法結(jié)構(gòu)IFconditionTHEN statements;[ELSIFconditionTHEN statements;][ELSE statements;]
ENDIF;5執(zhí)行控制--IF語句說明:在IF語句中,唯一一個(gè)必需的子句是IF子句。IF子句指出了要想執(zhí)行THEN關(guān)鍵字之后列出的語句所必須滿足的條件。如果這個(gè)條件計(jì)算為FALSE,并且提供了第一個(gè)ELSIF條件,那么Oracle將轉(zhuǎn)到這個(gè)條件。ELSIF子句用來指出在隨后的條件得到滿足時(shí)應(yīng)該執(zhí)行的另一個(gè)操作過程或一組語句。如果在ELSIF關(guān)鍵字之后列出的條件計(jì)算為TRUE,那么將執(zhí)行在隨后的THEN關(guān)鍵字之后列出的語句。如果在IF和ELSIF子句中提供的條件都是FALSE,將自動(dòng)執(zhí)行ELSE子句中提供的任何語句。IF語句總是以END
IF關(guān)鍵字結(jié)束。注意:ELSIF子句的關(guān)鍵字是一個(gè)單詞,不能寫成“ELSEIF”或“ELSE
IF”6執(zhí)行控制--IF語句例編寫PL/SQL語句塊,計(jì)算所購買圖書的零售價(jià),然后
確定在發(fā)貨時(shí)應(yīng)該包括的禮品。DECLARE v_giftVARCHAR2(20); c_retailpriceNUMBER(5,2):=29.95;BEGIN IFc_retailprice>56THEN v_gift:='FREESHIPPING'; ELSIFc_retailprice>25THEN v_gift:='BOOKCOVER'; ELSIFc_retailprice>12THEN v_gift:='BOXOFBOOKLABELS'; ELSE v_gift:='BOOKMARKER'; ENDIF; DBMS_OUTPUT.PUT_LINE('Thegiftforabookcosting'||c_retailprice||'isa'||v_gift);END;7
練習(xí)1.請(qǐng)按以下對(duì)應(yīng)關(guān)系,根據(jù)成績(jī)的不同,打印出對(duì)應(yīng)的級(jí)別
>90A>80B>70C>60D<=60E8執(zhí)行控制--CASE表達(dá)式CASEselectorWHENexpression1THENresult1WHENexpression2THENresult2WHENexpressionNTHENresultN[ELSEresultN+1]END?9CASE表達(dá)式根據(jù)不同的輸入打印不同的信息DECLAREv_gradechar(1):=UPPER('&p_grade');v_appraisalVARCHAR2(20);BEGINv_appraisal:=CASEv_gradeWHEN'A'THEN'Excellent'WHEN'B'THEN'VeryGood'WHEN'C'THEN'Good'ELSE'Nosuchgrade'END;DBMS_OUTPUT.PUT_LINE('Grade:'||v_grade||'Appraisal:'||v_appraisal);END;10
練習(xí)1.請(qǐng)按以下對(duì)應(yīng)關(guān)系,根據(jù)信號(hào)燈的不同,打印出對(duì)應(yīng)的行為
紅燈
停
綠燈
行
黃燈
等11循環(huán)控制希望反復(fù)執(zhí)行PL/SQL塊的可執(zhí)行部分中的語句。創(chuàng)建一個(gè)循環(huán),其中包括要執(zhí)行的語句,這個(gè)循環(huán)一直重復(fù),直到滿足某個(gè)條件為止,這時(shí)將會(huì)退出循環(huán)。有三種類型的循環(huán),你可以在PL/SQL塊的可執(zhí)行部分使用它們,以便重復(fù)執(zhí)行一組語句:基本循環(huán)FOR循環(huán)WHILE循環(huán)12循環(huán)控制--基本loop循環(huán)基本循環(huán)的語法:說明:基本循環(huán)用來執(zhí)行語句,直到滿足了EXIT子句指定的條件為止。根據(jù)指定的條件,執(zhí)行循環(huán)的次數(shù)在各次執(zhí)行時(shí)可能是不同的。LOOP關(guān)鍵字指出循環(huán)的開始,END
LOOP指出循環(huán)的結(jié)束。LOOP與END
LOOP之間的所有語句將一直重復(fù)執(zhí)行,直到退出循環(huán)為止。LOOP statements; EXIT
[WHENcondition];ENDLOOP;13循環(huán)控制--基本循環(huán)EXIT關(guān)鍵字指出應(yīng)該何時(shí)退出循環(huán)。注意:因?yàn)橐獔?zhí)行的語句之后列出了EXIT的關(guān)鍵字,所以循環(huán)中任何語句至少自動(dòng)執(zhí)行一次。這被稱為“后測(cè)試”(post-test)。在執(zhí)行語句之后,將評(píng)估EXIT子句中列出的任何條件,如果添加為TRUE,那么循環(huán)將會(huì)結(jié)束,然后將執(zhí)行PL/SQL塊的其余部分。14循環(huán)控制--基本循環(huán)例子:創(chuàng)建一個(gè)打印一系列數(shù)字的循環(huán)。DECLARE v_counterNUMBER(1):=0;BEGINLOOP v_counter:=v_counter+1; DBMS_OUTPUT.PUT_LINE('Thecurrentvalueofthecounteris'||v_counter); EXITWHENv_counter=4;ENDLOOP;END;15
練習(xí)1.請(qǐng)打印出1~10之間的偶數(shù)16循環(huán)控制--FOR循環(huán)FOR循環(huán)的語法說明FOR循環(huán)也使用一個(gè)計(jì)數(shù)器來控制循環(huán)的執(zhí)行次數(shù)。計(jì)數(shù)器不是一個(gè)必須在PL/SQL塊的聲明部分聲明的變量。在第一次執(zhí)行LOOP時(shí),將隱含聲明計(jì)數(shù)器。FOR子句要求用戶指出計(jì)數(shù)器的上限和下限。也即,必須指定計(jì)數(shù)器的初始值(lower_limit)以及終止循環(huán)的值(upper_limit)。在每一次執(zhí)行循環(huán)時(shí),計(jì)數(shù)器都將增加1。到達(dá)定義為計(jì)數(shù)器上限的值之后,就將退出這個(gè)循環(huán)。如果在這個(gè)子句中包括了REVERSE關(guān)鍵字,那么計(jì)數(shù)器可以采取相反的方式(計(jì)數(shù)器減少)FORcounterIN[REVERSE]lower_limit..upper_limitLOOP statements;ENDLOOP;17循環(huán)控制--FOR循環(huán)例子:FOR循環(huán)使用i作為循環(huán)計(jì)數(shù)器,IN關(guān)鍵字指定范圍BEGIN FORIIN1..10LOOP DBMS_OUTPUT.PUT_LINE('Thecurrentvalueofthecounteris'||i); ENDLOOP;END;18
練習(xí)1.請(qǐng)打印出15~25之間的所有數(shù)19循環(huán)控制--FOR循環(huán)CREATETABLEtemp_table(num_colNUMBER);DECLARE v_counterNUMBER:=10;BEGIN INSERTINTOtemp_table(num_col)VALUES(v_counter); FORv_counterIN20..25LOOP INSERTINTOtemp_table(num_col)VALUES(v_counter); ENDLOOP; INSERTINTOtemp_table(num_col)VALUES(v_counter); FORv_counterINREVERSE20..25LOOP INSERTINTOtemp_table(num_col)VALUES(v_counter); ENDLOOP;END;DROPTABLEtemp_table;20WHILE循環(huán)WHILE循環(huán)語法:說明:執(zhí)行一系列語句,直到條件變?yōu)镕ALSE為止。與前面循環(huán)不同,如果條件最初為FALSE,那么永遠(yuǎn)不能進(jìn)入這個(gè)循環(huán)。在WHILE子句提供的條件決定了循環(huán)將在何時(shí)終止。WHILEconditionLOOP statements;ENDLOOP;21WHILE循環(huán)例子:PL/SQL塊中使用WHILE循環(huán)來顯示變量的值,
直到指定的條件為FALSE為止。DECLARE v_counterNUMBER(2):=0;BEGIN WHILEv_counter<15LOOP DBMS_OUTPUT.PUT_LINE('Thecurrentvalueofthecounteris'||v_counter); v_counter:=v_counter+1; ENDLOOP;END;22
練習(xí)1.請(qǐng)打印出1~10之間的偶數(shù)(注:請(qǐng)用Whileloop的語法實(shí)現(xiàn))23嵌套的循環(huán)任何類型的循環(huán)都可以嵌套在另一個(gè)循環(huán)中。注意:在控制返回外部循環(huán)之前,必須完成內(nèi)部循環(huán)的執(zhí)行。在控制返回循環(huán)之后,只要外部循環(huán)的條件有效,就會(huì)再次執(zhí)行外部循環(huán),這包括了內(nèi)部循環(huán)的執(zhí)行。這個(gè)過程將一直繼續(xù),直到外部循環(huán)結(jié)束為止。24例子:PL/SQL塊包含了一個(gè)嵌套的FOR循環(huán)
25DECLARE v_counterNUMBER(2):=0;BEGINWHILEv_counter<3LOOP FORiIN1..2LOOP DBMS_OUTPUT.PUT_LINE('ThecurrentvalueoftheFORLOOPcounteris'||i); ENDLOOP; DBMS_OUTPUT.PUT_LINE('ThecurrentvalueoftheWHILEcounteris'||v_counter); v_counter:=v_counter+1; ENDLOOP;END;順序控制順序控制用于按順序執(zhí)行語句。用戶可以使用標(biāo)簽使程序獲得更好的可讀性。程序塊或循環(huán)都可以被標(biāo)記。標(biāo)簽的形式是《》。26順序控制--標(biāo)簽聲明標(biāo)簽聲明由封裝在<<>>中的label_name組成,后面至少要有一條可執(zhí)行的語句。語法如下所示:27<<label_name>>{...statements...}順序控制--GOTO語句執(zhí)行GOTO語句時(shí),控制會(huì)立即轉(zhuǎn)到由標(biāo)簽標(biāo)記的語句。語法如下所示:28GOTOlabel_name;對(duì)于塊、循環(huán)、IF語句而言,從外層跳轉(zhuǎn)到內(nèi)層是非法的。label_name在代碼范圍內(nèi)必須是唯一的。標(biāo)簽聲明后必須至少有一個(gè)語句要執(zhí)行。例子:判斷一個(gè)數(shù)字37是否為質(zhì)數(shù)
29DECLAREpVARCHAR2(30);nPLS_INTEGER:=37;BEGINFORjin2..ROUND(SQRT(n))LOOPIFnMODj=0THENp:='isnotaprimenumber';GOTOprint_now;ENDIF;ENDLOOP;p:='isaprimenumber';<<print_now>>DBMS_OUTPUT.PUT_LINE(TO_CHAR(n)||p);END;/順序控制--NULL語句NULL語句代表不進(jìn)行任何操作,它將直接跳轉(zhuǎn)到下一語句執(zhí)行。語法如下所示:30NULL;例子:使用GOTO語句進(jìn)行跳轉(zhuǎn),但在標(biāo)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 全國上海科教版初中信息技術(shù)七年級(jí)第一學(xué)期第一單元活動(dòng)一《認(rèn)識(shí)無處不在的信息》教學(xué)設(shè)計(jì)
- 2025年手拎袋項(xiàng)目投資可行性研究分析報(bào)告
- 16 家鄉(xiāng)新變化 教學(xué)設(shè)計(jì)-2024-2025學(xué)年道德與法治二年級(jí)上冊(cè)統(tǒng)編版
- 2025成都醫(yī)療設(shè)備居間代理協(xié)議
- 農(nóng)業(yè)生態(tài)園建設(shè)項(xiàng)目告表
- 2025年上衣項(xiàng)目可行性研究報(bào)告
- 中國來電顯示聲控電話項(xiàng)目投資可行性研究報(bào)告
- 2024-2030年中國職業(yè)女裝行業(yè)市場(chǎng)發(fā)展監(jiān)測(cè)及投資戰(zhàn)略規(guī)劃報(bào)告
- 中國柴胡皂苷 A行業(yè)市場(chǎng)占有率及投資前景預(yù)測(cè)分析報(bào)告
- 2025年度抵押房產(chǎn)證房地產(chǎn)抵押權(quán)保全合同范本
- 2024年達(dá)州市總工會(huì)招聘工會(huì)社會(huì)工作者筆試真題
- 2025至2030年中國肌酸數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 1.2 讀懂彼此的心 第二課時(shí) 課件 2024-2025學(xué)年五年級(jí)下冊(cè)道德與法治 統(tǒng)編版
- 2025年度電視產(chǎn)品進(jìn)出口貿(mào)易合同4篇
- 2025年“開學(xué)第一課”觀后感心得體會(huì)(3篇)
- 外科護(hù)理5分鐘小講課
- 2025年中國融通農(nóng)發(fā)社會(huì)招聘筆試參考題庫含答案解析
- 2025年天津市寧河區(qū)事業(yè)單位招聘12人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2024年福建省莆田市數(shù)學(xué)三上期末質(zhì)量檢測(cè)模擬試題含解析
- 2025年山東菏澤投資發(fā)展集團(tuán)限公司招聘61人管理單位筆試遴選500模擬題附帶答案詳解
- 幕墻工程項(xiàng)目管理手冊(cè)
評(píng)論
0/150
提交評(píng)論