oracle存储过程中的循环语句:1、loop循环,语法为“loop 循环体;exit when 结束循环条件表达式;end loop;”;2、while循环,语法为“while 条件表达式 loop 循环语句;end loop;”;3、for循环,语法为“for 变量 in (reverse) 计数器下限值...计数器上限值 loop 循环体;end loop;”。
本教程操作环境:windows10系统、oracle 12c版、dell g3电脑。
oracle存储过程中的循环语句有哪些当程序需要反复执行某一操作时,就必须使用循环结构。pl/sql 中的循环语句主要包括loop语句、where语句和for语句3种。
loop语句loop语句会先执行一次循环体,然后再判断exit when关键字后面的条件表达式是ture还是false,为true的时候退出循环体,否则程序将再次执行循环体。
基本语法:
loop a; exit when b;end loop;
a: 代表循环体中的sql语句,可以是一句也可能是多句,这是循环体核心部分,这些语句至少被执行一遍。
b: 循环结束条件表达式,为ture时,退出循环,否则再次执行循环体。
代码示例:
-- created on 2020/12/16 by guo declare i int:= 0;begin loop i:=i+1; dbms_output.put_line(i); exit when i > 3; end loop;end;
运行结果:
实战示例:
使用loop+游标的时候,取游标当中的值,必须重新赋值一遍,要不然会报错。
-- created on 2020/12/17 by guo declare cursor user is select * from user_table; user1 user_table%rowtype;begin open user; loop fetch user into user1; exit when user%notfound; dbms_output.put_line('用户名称:' || user1.user_name); dbms_output.put_line('用户年龄:' || user1.user_age); end loop; close user; --关闭游标end;
while语句在执行之前,首先要判断条件表达式的值是否为true,true则执行循环体,否则退出while循环,继续执行循环后面的代码。
基本语法:
while a loop b;end loop;
a: 表示一个条件表达式,当值为true时,程序执行循环体,否则退出。
b: 循环体内的sql语句。
代码示例:
-- created on 2020/12/17 by guo declare i int := 0;begin while i < 3 loop i := i + 1; dbms_output.put_line(i); end loop;end;
运行结果:
实战示例:
-- created on 2020/12/17 by guo declare cursor user is select * from user_table; user1 user_table%rowtype;begin open user; fetch user into user1; while(user%found)loop dbms_output.put_line('用户名称:' || user1.user_name); fetch user into user1; end loop;end;
for语句for语句是一个可提前设置循环次数的循环控制语句,它有一个循环计数器,通常是一个整型变量,通过这个计数器来控制循环次数。
基本语法:
for a in (reverse) b...c loop d; end loop;
a: 表示一个变量,通常为证书类型,用来作为计数器,默认值是递增的,当循环当中使用reverse关键字时,就会循环递减。
b: 计数器下限值,当计数器的值小于下限值的时候,终止循环。
c: 计数器上限值,当计数器的值大于上限值的时候,终止循环。
d: 循环体。
代码示例:
-- created on 2020/12/17 by guo declare i int := 0;begin for i in reverse 1..5 loop dbms_output.put_line(i); end loop;end;
运行结果:
实战示例:
配合游标使用
-- created on 2020/12/17 by guo declare cursor user is select * from user_table;begin for user1 in user loop dbms_output.put_line('用户名称:'||user1.user_name); dbms_output.put_line('用户年龄:'||user1.user_age); end loop;end;
推荐教程:《oracle视频教程》
以上就是oracle存储过程中的循环语句有哪些的详细内容。
