专注于能源、电力等资产密集型行业管理及信息化建设
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 大树 阅读(130) 评论(0) 编辑 收藏
Powered by: BlogJava Copyright © 大树