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

          最新隨筆

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 灵寿县| 南康市| 游戏| 包头市| 九江市| 玛纳斯县| 四平市| 许昌县| 富宁县| 吉林市| 墨江| 馆陶县| 襄汾县| 溧阳市| 华安县| 大埔县| 麻栗坡县| 琼海市| 博罗县| 盐亭县| 雷波县| 鄄城县| 鄂托克前旗| 清流县| 昌平区| 彰化县| 稻城县| 石台县| 秦安县| 泰州市| 精河县| 罗田县| 嫩江县| 简阳市| 特克斯县| 芦溪县| 会昌县| 永川市| 盈江县| 九龙城区| 高邮市|