oracle中的几种简单循环方式

本文详细介绍了PL/SQL中四种不同的循环结构:for循环、loop循环、while循环和使用goto语句的控制流程。通过具体的代码示例,展示了如何在Oracle数据库环境中使用这些循环来实现数据处理和条件判断。

declare

v_name varchar(20) :='liuhu';

v_num number :=0;

cursor test_cursor is select * from base_country;

1、for循环

begin

for i in 1..10 loop

if mod(i,2)=0 then

dbms_outout.put_line(v_name || i);

exit;--exit退出循环;return退出存储过程

end if;

end loop;

end;

2、loop循环

begin

loop

v_num:=v_num+1;

if v_num >5 then 

exit;

end loop;

end 

3、while 循环

begin

while v_num>5 loop

v_num :v_num+1;

dbms_output.put_line('while circle '|| v_num);

exit when v_num>20;

end loop;

end;

4、goto语句

for country in test_cursor loop

if country.iso='CN' then

goto reapt_point;

end if;

 

Oracle存储过程中可以使用多种方式编写循环,常见的有以下几种: ### 1. 基本的`LOOP`循环 `LOOP`循环会重复执行一系列语句,直到遇到`EXIT`语句退出循环。示例代码如下: ```plsql CREATE OR REPLACE PROCEDURE loop_example AS counter NUMBER := 1; BEGIN LOOP -- 这里可以编写需要循环执行的语句 DBMS_OUTPUT.PUT_LINE('Counter: ' || counter); counter := counter + 1; EXIT WHEN counter > 5; END LOOP; END loop_example; ``` 在这个示例中,`counter`初始值为1,每次循环`counter`加1,当`counter`大于5时,使用`EXIT`语句退出循环。 ### 2. `WHILE`循环 `WHILE`循环在条件为`TRUE`时执行循环体,条件为`FALSE`时退出循环。示例代码如下: ```plsql CREATE OR REPLACE PROCEDURE while_loop_example AS counter NUMBER := 1; BEGIN WHILE counter <= 5 LOOP DBMS_OUTPUT.PUT_LINE('Counter: ' || counter); counter := counter + 1; END LOOP; END while_loop_example; ``` 此示例中,只要`counter`小于等于5,就会执行循环体,每次循环`counter`加1。 ### 3. `FOR`循环 `FOR`循环有两种形式,一种是数值型`FOR`循环,另一种是游标`FOR`循环。 #### 数值型`FOR`循环 ```plsql CREATE OR REPLACE PROCEDURE for_loop_example AS BEGIN FOR counter IN 1..5 LOOP DBMS_OUTPUT.PUT_LINE('Counter: ' || counter); END LOOP; END for_loop_example; ``` 在数值型`FOR`循环中,`counter`从1递增到5,循环体每次执行时`counter`的值会自动变化。 #### 游标`FOR`循环 ```plsql CREATE OR REPLACE PROCEDURE cursor_for_loop_example AS CURSOR emp_cursor IS SELECT empno, ename FROM emp; BEGIN FOR emp_rec IN emp_cursor LOOP DBMS_OUTPUT.PUT_LINE('Employee Number: ' || emp_rec.empno || ', Employee Name: ' || emp_rec.ename); END LOOP; END cursor_for_loop_example; ``` 游标`FOR`循环会自动打开、获取和关闭游标,遍历游标中的每一行记录。 ### 4. 结合游标和`LOOP`循环 ```plsql CREATE OR REPLACE PROCEDURE cursor_loop_example AS CURSOR emp_cursor IS SELECT empno, ename FROM emp; emp_rec emp_cursor%ROWTYPE; BEGIN OPEN emp_cursor; LOOP FETCH emp_cursor INTO emp_rec; EXIT WHEN emp_cursor%NOTFOUND; DBMS_OUTPUT.PUT_LINE('Employee Number: ' || emp_rec.empno || ', Employee Name: ' || emp_rec.ename); END LOOP; CLOSE emp_cursor; END cursor_loop_example; ``` 在这个示例中,手动打开游标,使用`FETCH`语句获取记录,当`%NOTFOUND`属性为`TRUE`时退出循环,最后关闭游标。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值