PL/SQL流程控制-----from-//ddvip.com

          ?

          ?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??????????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。

          ?

          posted on 2005-11-05 13:27 大樹 閱讀(133) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          <2025年6月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          導航

          統計

          公告

          本期話題
          能源行業資產管理咨詢
          資產管理信息化方案提供
          資產管理相關行業培訓
          大型企業軟件體系架構整合
          資產管理信息系統實施
          信息集成
          信息孤島

          常用鏈接

          留言簿(6)

          隨筆檔案(45)

          文章檔案(7)

          新聞檔案(1)

          相冊

          wallgate management consulting

          最新隨筆

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 独山县| 宾川县| 黑水县| 正定县| 萝北县| 通化县| 湘乡市| 霸州市| 芦溪县| 葵青区| 沂水县| 龙南县| 慈利县| 泉州市| 清流县| 金乡县| 汉中市| 南丹县| 湘乡市| 南靖县| 滦平县| 大兴区| 格尔木市| 铜梁县| 江都市| 肥东县| 中卫市| 周宁县| 新河县| 南充市| 依兰县| 剑阁县| 开原市| 贵州省| 鄂伦春自治旗| 柘荣县| 竹溪县| 紫云| 古交市| 合肥市| 灌云县|