以下是小编为大家收集的plsql中流程控制方式,本文共3篇,欢迎参阅,希望可以帮助到有需要的朋友。

篇1:pl\sql中流程控制方式
pl\sql中流程控制方式
块
Java代码
declare
username varchar2(20);
begin
select t.ename into username from emp t where rownum=1;
dbms_output.put_line(username);
end;
2 oracle 中case when 用法
Java代码
declare
age number(6,2); ----这里的六代表总长度,2代表小数点后面的长度
begin
age:=&myage;
case age
when 10 then
dbms_output.put_line('you have 10 year');
when 20 then
dbms_output.put_line('you have 20 year');
when 30 then
dbms_output.put_line('you have 3o year');
else
dbms_output.put_line('I donot know you age');
end case;
end;
3 oracle 中loop循环的用法
Java代码
declare
q number :=0;
begin
loop
q:=q+1;
dbms_output.put_line('q='||q);
exit when q=10;
end loop;
end;
4.loop循环中另外的一种退出方法
Java代码
declare
q number :=0 ;
begin
loop
q:=q+ 1;
dbms_output.put_line( 'q='||q);
if q=10
then
exit;
end if ;
end loop ;
dbms_output.put_line('hello i barek'); ---exit跳出后这句号会执行
end;
5.loop循环中另外的一种
Java代码
declare
q number := 8;
begin
while q < 100 loop
q := q + 1;
dbms_output.put_line( 'hello world good ');
end loop;
end;
6.loop 的for用法
Java代码
declare
q number := 8;
begin
for c in 1..10 loop --- 要想从10到1 要在 in 的后面加上 reverse
dbms_output.put_line('c is '||c);
dbms_output.put_line('hello world good ');
end loop;
end;
7.goto语句的用法
Java代码
declare
sal number ;
begin
select t.sal into sal from emp t where rownum=1 ;
if sal<0
then
goto a;
else
goto b;
end if;
dbms_output.put_line('this is a');
dbms_output.put_line('this is b');
end;
篇2:PL/SQL流程控制语句
,
跟在IN REVERSE 后面的数字必须是从小到大的顺序,而且必须是整数,不能是变量或表达式。可以使用EXIT退出循环。
例:使用循环语句打印 1 - 100.(三种方式)
1). LOOP ... EXIT WHEN ... END LOOP
declare--初始化条件v_i number(3) := 1;beginloop--循环体dbms_output.put_line(v_i);--循环条件exit when v_i = 100;--迭代条件v_i := v_i + 1;end loop;end;
2). WHILE ... LOOP ... END LOOP
declare--初始化条件v_i number(3) := 1;begin--循环条件while v_i <= 100 loop--循环体dbms_output.put_line(v_i);--迭代条件v_i := v_i + 1;end loop;end;
3).
beginfor i in 1 .. 100 loopdbms_output.put_line(i);end loop;end;
例: 综合使用 if, while 语句, 打印 1 - 100 之间的所有素数
(素数: 有且仅用两个正约数的整数, 2, 3, 5, 7, 11, 13, ...).
declarev_i int := 2;v_j int := 2;v_flag boolean := false;beginwhile v_i < 100 loopv_j := 2;while v_j ④标号和GOTO PL/SQL中GOTO语句是无条件跳转到指定的标号去的意思。语法如下: GOTO label; . . . . . . < 例:打印1——100的自然数,当打印到50时,跳出循环,输出“打印结束” (方法一) beginfor i in 1..100 loopdbms_output.put_line(i);if(i = 50) thengoto label;end if;end loop;< 条件控制 下面通过实例介绍条件控制语句的使用。 1. if..then..end if条件控制 采用if..then..end if条件控制的语法结构如图9.15所示。 在【SQLPlus Worksheet】中执行下列PL/SQL程序,该程序判断两个整数变量的大小。 执行结果如图9.16所示。 DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD set serveroutput on declare number1 integer:=90; number2 integer:=60; begin if number1>=number2 then dbms_output.put_line('number1大于等于number2'); end if; end; DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD 【配套程序位置】:第9章\ conditioncontrol1.sql。 2. if..then..else..end if条件控制 采用if..then..else..end if条件控制的语法结构如图9.17所示。 在【SQLPlus Worksheet】中执行下列PL/SQL程序,该程序判断两个整数变量的大小,输出不同的结果。执行结果如图9.18所示。 DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD 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; DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD 【配套程序位置】:第9章\ conditioncontrol2.sql。 3. if嵌套条件控制 采用if嵌套条件控制的语法结构如图9.19所示。 在【SQLPlus Worksheet】中执行下列PL/SQL程序,该程序判断两个整数变量的大小,输出不同的结果。 执行结果如图9.20所示。 DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD 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; DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD 【配套程序位置】:第9章\ conditioncontrol3.sql。 循环控制 循环结构是按照一定逻辑条件执行一组命令,PL/SQL中有4种基本循环结构,在它们基础上又可以演变出许多嵌套循环控制,这里介绍最基本的循环控制语句。 1. loop..exit..end loop循环控制 采用loop..exit..end loop循环控制的语法结构如图9.21所示。 在【SQLPlus Worksheet】中执行下列PL/SQL程序,该程序将number1变量每次加1,一直到等于number2为止,统计输出循环次数。 DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD 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; DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD 执行结果如图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为止,统计输出循环次数。 DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD 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; DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD 执行结果如图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为止,统计输出循环次数。 DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD 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; DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD 执行结果如图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所示。 DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD 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; DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD 【配套程序位置】:第9章\forcontrol.sql。 ★程菲作文 ★程维的诗 文档为doc格式