PL/SQL流程式控制制

來源:互聯網
上載者:User
  PL/SQL程式中的流程式控制制語句借鑒了許多進階語言的流程式控制制思想,但又有自己的特點。

條件控制

    下面通過執行個體介紹條件控制語句的使用。
    1. if..then..end if條件控制
    採用if..then..end if條件控制的文法結構如圖9.15所示。

    在【SQLPlus Worksheet】中執行下列PL/SQL程式,該程式判斷兩個整數變數的大小。 執行結果如圖9.16所示。
    ―――――――――――――――――――――――――――――――――――――
    set serveroutput on
    declare
       number1 integer:=90;
       number2 integer:=60;
    begin
       if number1>=number2 then
           dbms_output.put_line('number1大於等於number2');
       end if;
    end;
    ―――――――――――――――――――――――――――――――――――――
    【配套程式位置】:第9章\ conditioncontrol1.sql。

    2. if..then..else..end if條件控制
    採用if..then..else..end if條件控制的文法結構如圖9.17所示。

    在【SQLPlus Worksheet】中執行下列PL/SQL程式,該程式判斷兩個整數變數的大小,輸出不同的結果。執行結果如圖9.18所示。
    ―――――――――――――――――――――――――――――――――――――
    set serveroutput on
    declare
        number1 integer:=80;
        number2 integer:=90;
    begin
        if number1>=number2 then
            dbms_output.put_line('number1大於等於number2');
        else
            dbms_output.put_line('number1小於number2');
        end if;
    end;
    ―――――――――――――――――――――――――――――――――――――
    【配套程式位置】:第9章\ conditioncontrol2.sql。

    3. if嵌套條件控制
    採用if嵌套條件控制的文法結構如圖9.19所示。

    在【SQLPlus Worksheet】中執行下列PL/SQL程式,該程式判斷兩個整數變數的大小,輸出不同的結果。
    執行結果如圖9.20所示。
    ―――――――――――――――――――――――――――――――――――――
    set serveroutput on
    declare
        number1 integer:=80;
        number2 integer:=90;
    begin
        if number1<=number2 then
           if number1=number2 then
              dbms_output.put_line('number1等於number2');
           else
              dbms_output.put_line('number1小於number2');
           end if;
        else
              dbms_output.put_line('number1大於number2');
        end if;
    end;
    ―――――――――――――――――――――――――――――――――――――
    【配套程式位置】:第9章\ conditioncontrol3.sql。


迴圈控制

    迴圈結構是按照一定邏輯條件執行一組命令,PL/SQL中有4種基本迴圈結構,在它們基礎上又可以演變出許多嵌套迴圈控制,這裡介紹最基本的迴圈控制語句。
    1. loop..exit..end loop迴圈控制
    採用loop..exit..end loop迴圈控制的文法結構如圖9.21所示。

    在【SQLPlus Worksheet】中執行下列PL/SQL程式,該程式將number1變數每次加1,一直到等於number2為止,統計輸出迴圈次數。
    ―――――――――――――――――――――――――――――――――――――
    set serveroutput on
    declare
        number1 integer:=80;
        number2 integer:=90;
        i integer:=0;
    begin
       loop
          number1:=number1+1;
          if number1=number2 then
             exit;
          else
             i:=i+1;
          end if;
      end loop;
     dbms_output.put_line('共迴圈次數:'||to_char(i));
    end;
    ―――――――――――――――――――――――――――――――――――――
    執行結果如圖9.22所示。

    【配套程式位置】:第9章\loopcontrol1.sql。
    2. loop..exit..when..end loop迴圈控制
    採用loop..exit..when..end loop迴圈控制的文法結構與圖9.21所示結構類似。
    exit when實際上就相當於
        if 條件 then
        exit;
      end if;
    在【SQLPlus Worksheet】中執行下列PL/SQL程式,該程式將number1變數每次加1,一直到等於number2為止,統計輸出迴圈次數。
    ―――――――――――――――――――――――――――――――――――――
    set serveroutput on
    declare
        number1 integer:=80;
        number2 integer:=90;
        i integer:=0;
    begin
        loop
           number1:=number1+1;
           i:=i+1;
           exit when number1=number2;
        end loop;
     dbms_output.put_line('共迴圈次數:'||to_char(i));
    end;
    ―――――――――――――――――――――――――――――――――――――
    執行結果如圖9.23所示。

    【配套程式位置】:第9章\loopcontrol2.sql。
    when迴圈控制結束條件比採用if的條件控制結束迴圈次數多1次。
    3. while..loop..end loop迴圈控制
    採用loop..exit..when..end loop迴圈控制的文法如下。
    while 條件 loop
       執行語句段;
    end loop;
    在【SQLPlus Worksheet】中執行下列PL/SQL程式,該程式將number1變數每次加1,一直到等於number2為止,統計輸出迴圈次數。
    ―――――――――――――――――――――――――――――――――――――
    set serveroutput on
    declare
        number1 integer:=80;
        number2 integer:=90;
        i integer:=0;
    begin
        while number1<number2 loop
          number1:=number1+1;
          i:=i+1;
       end loop;
     dbms_output.put_line('共迴圈次數:'||to_char(i));
    end;
    ―――――――――――――――――――――――――――――――――――――
    執行結果如圖9.24所示。

    【配套程式位置】:第9章\whilecontrol.sql。
    4. for..in..loop..end迴圈控制
    採用for..in..loop..end迴圈控制的文法如下。
    for 迴圈變數 in [reverse] 迴圈下界..迴圈上界 loop
        迴圈處理語句段;
    end loop;
    在【SQLPlus Worksheet】中執行下列PL/SQL程式,該程式通過迴圈變數I來控制number1增加次數,輸出結果。執行結果如圖9.25所示。
    ―――――――――――――――――――――――――――――――――――――
    set serveroutput on
    declare
       number1 integer:=80;
       number2 integer:=90;
       i integer:=0;
    begin
        for i in 1..10 loop
          number1:=number1+1;
        end loop;
      dbms_output.put_line('number1的值:'||to_char(number1));
    end;
    ―――――――――――――――――――――――――――――――――――――
    【配套程式位置】:第9章\forcontrol.sql。


相關文章

Beyond APAC's No.1 Cloud

19.6% IaaS Market Share in Asia Pacific - Gartner IT Service report, 2018

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。