下面通過實例介紹條件控制語句的使用。 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。