專注于能源、電力等資產密集型行業管理及信息化建設
EAM、ERP、ITS
?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 大樹 閱讀(132) 評論(0) 編輯 收藏
Powered by: BlogJava Copyright © 大樹