欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

8.PL_SQL——PL_SQL中的條件控制語句

    和大多數(shù)程序語言一樣,PL/SQL也有控制語句執(zhí)行的結(jié)構(gòu),主要包括:

專注于為中小企業(yè)提供網(wǎng)站設(shè)計、網(wǎng)站建設(shè)服務(wù),電腦端+手機端+微信端的三站合一,更高效的管理,為中小企業(yè)撫寧免費做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動了1000多家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實現(xiàn)規(guī)模擴充和轉(zhuǎn)變。

             1、順序結(jié)構(gòu):程序從上往下執(zhí)行逐條語句,就是順序結(jié)構(gòu);

             2、分支條件判斷:分支條件判斷主要是指的IF語句和CASE語句。

             3、循環(huán)語句:循環(huán)結(jié)構(gòu)主要指的是REPEAT、LOOP和DO WHILE語句。

    本章節(jié)主要講解條件判斷語句的用法。

 

一、 IF語句的用法

                IF 語句的基本格式為:             

                IF conditionTHEN

                                statements;

                [ ELSIF conditionTHEN 

                --注意,這里的ELSIF中間沒有E,ELSIF可以出現(xiàn)任意次

                statements;]

                [ ELSE

                 statements;

                ]

                END IF;

 

          IF 后面的判斷條件可以是布爾值,常量或表達式,判斷結(jié)果為TRUE, FALSE或NULL,其中NULL這種情況是PL/SQL中特有的,其他編程語言并不常見;

        如果IF后的條件判斷結(jié)果為TRUE,就執(zhí)行THEN后面的語句;如果結(jié)果為FALSE和NULL,則不執(zhí)行THEN后面的結(jié)果,而執(zhí)行ELSE后面的語句。

 

下面看一個簡單的例子:

 

SQL> edit

 

DECLARE
        v_myage number :=31;
BEGIN
        IF v_myage < 11
        THEN
           DBMS_OUTPUT.PUT_LINE(' I am a child');
        ELSE
           DBMS_OUTPUT.PUT_LINE( ' I am not achild! ');
                 -- 由于IF后的條件判斷結(jié)果為FALSE,所以會執(zhí)行這條語句
        END IF;
END;
/

 

SQL> /

I am not a child!
PL/SQL procedure successfullycompleted.

 

現(xiàn)在為上述例子多添加幾條分支進行條件判斷:

 

SQL> edit

BEGIN
        IF v_myage < 11 THEN
                DBMS_OUTPUT.PUT_LINE(' I am achild ');
                ELSIF v_myage < 20 THEN
                     DBMS_OUTPUT.PUT_LINE( 'Iam young ');
                ELSIF v_myage < 30 THEN
                     DBMS_OUTPUT.PUT_LINE( 'Iam in my twenties');
                ELSIF v_myage < 40 THEN
                     DBMS_OUTPUT.PUT_LINE( 'I am in mythirties');
                -- 由于31大于11,20,30,而小于40,所以執(zhí)行這條語句
                ELSE
                     DBMS_OUTPUT.PUT_LINE( 'Iam always young ');
        END IF;
END;
/

 

SQL> /

I am in my thirties
PL/SQL procedure successfullycompleted.

 

如果IF條件判斷的結(jié)果為NULL,則不會執(zhí)行THEN后面的語句。

 

SQL> edit

DECLARE
        v_myage NUMBER;
BEGIN
       -- IF v_myage IS NULL
                --這里的結(jié)果時TRUE,因為判斷是變量v_myage是否為NULL值,是就為TRUE,不是就為FALSE
        IF v_myage < 11 THEN
                -- 如果判斷的條件為NULL值,則結(jié)果為NULL
        THEN
           DBMS_OUTPUT.PUT_LINE(' I am a child');
        ELSE
           DBMS_OUTPUT.PUT_LINE( ' I am not achild! ');
        END IF;
END;
/

 

SQL> /

I am not a child
PL/SQL procedure successfullycompleted.

 

IF 語句的條件還可以使用AND,OR,NOT等邏輯符進行組合。

 

IF條件判斷語句中需要注意一些細節(jié):

                a. IF和 END IF必須配對出現(xiàn);

                b. END IF中間有空格;

                c. ELSIF中間沒有E;

                d.在END IF后面有分號“;”

               

 

二、 CASE的用法

 

          CASE實際上IF語句的變體,當IF語句有大量類似的ELSIF判斷條件時,就可以使用CASE來進行簡化。CASE的用法可以分為兩種,一種是CASE表達式,另一種是CASE語句。

 

(1)CASE表達式

                CASE 表達式的基本格式為:  

                                CASE selector

                                                WHENexpression1 THEN result1

                                                WHENexpression2 THEN result2

                                                ...

                                                WHENexpressionN THEN resultN

                                                [ELSEresultN+1]

                                END;

                其中selector選擇值如果等于expression1的值,就執(zhí)行result1,如果等于expression2,就執(zhí)行result2...以此類推,如果沒有expression的值能與之匹配的,就執(zhí)行resultN+1。

               

                CASE表達式可以分為simple CASE和Searched CASE,其中simple CASE是指CASE后面會跟一個選擇值,然后將條件表達式的結(jié)果和這個選擇值進行比較,如下述這個例子:

 

SQL> edit                          

              

  SET VERIFY OFF
DECLARE
        v_grade CHAR(1) := UPPER('&grade');
        v_appraisal VARCHAR2(20);
BEGIN
        v_appraisal := CASE v_grade
                WHEN 'A' THEN 'Excellent'
                WHEN 'B' THEN 'Very Good'
                WHEN 'c' THEN 'Good'
                ELSE 'No such grade'
             END;
-- 從CASE到END這一部分是simple CASE,其運行結(jié)果作為一個值賦給v_appraisal這個變量。                               
        DBMS_OUTPUT.PUT_LINE ('Grade: ' ||v_grade || ' Appraisal ' || v_appraisal);
END;

               

SQL>  /

Enter value for grade: a
Grade: A Appraisal Excellent
PL/SQL procedure successfullycompleted.

 

SQL> /

Enter value for grade: s
Grade: S Appraisal No suchgrade
PL/SQL procedure successfullycompleted.

 

         Searched CASE 中CASE后面沒有選擇值selector,而是直接判斷關(guān)鍵字WHEN后面表達式的布爾值,如下面這個例子:

 

SQL> edit

DECLARE
        v_grade CHAR(1) := UPPER('&grade');
        v_appraisal VARCHAR2(20);
BEGIN
        v_appraisal := CASE
                -- 這里的CASE沒有選擇值了
                WHEN v_grade = 'A' THEN'Excellent'
                -- 直接在條件判斷部分完成布爾值的返回
                WHEN v_grade IN ('B','C') THEN'Good'
                ELSE 'No such grade'
        END;
        DBMS_OUTPUT.PUT_LINE ('Grade: ' ||v_grade || ' Appraisal ' ||v_appraisal);
END;
/

 

SQL>/

Enter value for grade: A
Grade: A   Appraisal Excellent
PL/SQL procedure successfullycompleted.

 

SQL> /

Enter value for grade: o
Grade: O  Appraisal No such grade
PL/SQL procedure successfullycompleted.

 

SQL> /

Enter value for grade: b
Grade: B  Appraisal Good
PL/SQL procedure successfullycompleted.

 

(2)CASE語句

CASE語句就是一條條獨立的語句,它不能將運行結(jié)果再賦值給其他的變量了。

如下面這個例子:

 

SQL> edit

DECLARE
        v_deptid NUMBER;
        v_deptname VARCHAR2(20);
        V_emps NUMBER;
        v_mngid NUMBER:= 108;
BEGIN
        CASE v_mngid
            WHEN 108 THEN
                SELECT department_id,department_name
                INTO v_deptid, v_deptname
                FROM departments
                WHERE manager_id = 108;
 
                SELECT count(*)
                INTO v_emps
                FROM employees
                WHERE department_id = v_deptid;
            --CASE語句不再作為一個整體將運行結(jié)果賦值給其他變量了                                     
            WHEN 200 THEN
                SELECT department_id,department_name
                INTO v_deptid, v_deptname
                FROM departments
                WHERE manager_id = 200;
 
                SELECT count(*)
                INTO v_emps
                FROM employees
                WHERE department_id = v_deptid;
           ELSE
                SELECT department_id,department_name
                INTO v_deptid, v_deptname
                FROM departments
                WHERE manager_id = 100;
 
                SELECT count(*)
                INTO v_emps
                FROM employees
                WHERE department_id = v_deptid;
        END CASE;
            --CASE語句中必須有END CASE,如果是CASE表達式就不需要END CASE。
 
        DBMS_OUTPUT.PUT_LINE('You are workingin the ' || v_deptname || ' department. There are ' ||v_emps || 'employees inthis department');
END;
/

SQL> /

You are working in theFinance department. There are 6 employees in this
department
PL/SQL procedure successfullycompleted.

 

           CASE語句也分為SimpleCASE語句和Searched CASE語句。他們之間的區(qū)別和CASE表達式一樣。上述例子屬于SimpleCASE的用法,如果要使用Searched CASE語句,可以寫成如下形式:

 

SQL> edit

DECLARE
        v_deptid NUMBER;
        v_deptname VARCHAR2(20);
        V_emps NUMBER;
        v_mngid NUMBER:= 100;
BEGIN
        CASE
            WHEN v_mngid = 108 THEN
                --v_mngid不作為選擇值,而是直接在WHEN后面進行判斷
                SELECT department_id,department_name
                INTO v_deptid, v_deptname
                FROM departments
                WHERE manager_id = 108;
 
                SELECT count(*)
                INTO v_emps
                FROM employees
                WHERE department_id = v_deptid;
                                               
            WHEN v_mngid = 200 THEN
                SELECT department_id,department_name
                INTO v_deptid, v_deptname
                FROM departments
                WHERE manager_id = 200;
 
                SELECT count(*)
                INTO v_emps
                FROM employees
                WHERE department_id = v_deptid;
           ELSE
                SELECT department_id,department_name
                INTO v_deptid, v_deptname
                FROM departments
                WHERE manager_id = 100;
 
                SELECT count(*)
                INTO v_emps
                FROM employees
                WHERE department_id = v_deptid;
        END CASE;
        
        DBMS_OUTPUT.PUT_LINE('You are workingin the ' || v_deptname || ' department. There are ' ||v_emps || 'employees inthis department');
END;
/

 

SQL> /

You are working in theExecutive department. There are 3 employees in this
department
PL/SQL procedure successfullycompleted.

三、關(guān)于NULL值的處理

NULL值在PL/SQL中有一些特殊的屬性:

a. 在簡單的比較運算表達式里如果有NULL值參與運算,最終的結(jié)果將表現(xiàn)為NULL值;

b.  在邏輯運算中如果出現(xiàn)了 NOT NULL,則結(jié)果還是NULL,只有寫成IS NULL或者是IS NOT NULL,才能得到TRUE或者FALSE的值;

c. IF條件判斷語句中只有結(jié)果為TRUE時,才執(zhí)行THEN后面的語句,如果結(jié)果為NULL或者FASLE,則不會執(zhí)行

d. NULL值在PL/SQL中還可以單獨成為一條語句,用來表示什么都不做,例如:

                IF conditions THEN

                                Dosome thing;

                ELSE

                                NULL;

                               

使用NULL語句的主要有:

                1. 增強程序的可讀性。

                2. 在標簽后面使用NULL。

                標簽的用法后文會詳解,這里先舉個小例子:                                           

                                DECLARE

                                                ...

                                BEGIN

                                                IFconditions THEN

                                                      GOTO LastPoint

         -- GOTO表示執(zhí)行到這一步時,直接跳轉(zhuǎn)到標簽LastPoint所在的位置。

                                                ENDIF

                                                ...

                                <<LastPoint>>

         --標簽LastPoint的后面應(yīng)該有語句,但在生產(chǎn)環(huán)境中經(jīng)常會碰到標簽后面不做任何操作的情況

         --使用NULL;語句,可以既滿足語法規(guī)則,又不做任何操作。

                                                NULL;

                                END;

 

四、條件判斷中的邏輯關(guān)系

1.邏輯運算符AND,OR和NOT

         在進行條件判斷時可以使用邏輯運算符AND, OR 和NOT,當布爾值和邏輯運算符組合起來后會形成各種邏輯關(guān)系:

8.PL_SQL——PL_SQL中的條件控制語句

2.短路現(xiàn)象

         短路操作是指在邏輯判斷中只用判斷一部分條件而無需判斷整個條件的運算方式。如果邏輯運算符是AND,則AND前面的條件判斷為FALSE后,就不繼續(xù)判斷AND后面的條件了;如果邏輯運算符是OR,則OR前面的條件判斷為真后,就不繼續(xù)判斷OR后面的條件了。

網(wǎng)頁標題:8.PL_SQL——PL_SQL中的條件控制語句
URL標題:http://aaarwkj.com/article28/pcsojp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供移動網(wǎng)站建設(shè)小程序開發(fā)、外貿(mào)網(wǎng)站建設(shè)網(wǎng)站設(shè)計公司、全網(wǎng)營銷推廣、域名注冊

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站建設(shè)
日韩人成理论午夜福利| 农村女人91熟女熟妇| 免费国产成人高清在线视频| 日本久久高清免费观看| 四虎在线观看免费资源| 亚洲av欧美日韩国产| 中文字幕成人资源网站| 日本黄色中文字幕在线观看| 麻豆久久精品国产亚洲精品超碰热| 免费97久久人妻一区精品| 免费人成视频在线观看不卡| 精品中文人妻中文字幕| 亚洲男女内射在线视频| 亚洲精品中文字幕乱码三区91| 手机不卡高清播放一区二区| 无遮挡动漫网站免费观看| 日本视频三区在线播放| 国产精品一区在线播放| 亚洲av色男人天堂网| 青青操国产在线自偷自拍| 国产女人高潮流白丝视频| 国产精品v一区二区三区| 亚洲av精二区三区四区| 日本理论高清在线观看| 亚洲全乱码精品一区二区| 亚洲精品黄色在线观看| 国产91日韩欧美在线观看| 亚洲日本欧美激情综合| 久久精品国产亚洲av麻豆花絮| 不卡视频一区中文字幕| 亚洲精品国产av一区| 亚洲一级特黄高清录像| 欧美视频综合一级91| 亚洲欧美日韩另类精品一区二区三区| 欧美性大片免费在线观看| 久久国产精品一区av瑜伽| 欧美日韩亚洲视频二区| av久久精品在线观看| 91日韩人妻一区二区三区| 欧美黄色一级在线免费观看| 国产一区二区成人精品|