oracle 游标三种循环 不同,Oracle的游标使用方法 三种循环遍历游标方法(即plsql三种循环方法)...

Oracle的游标使用方法 三种循环

2017年03月31日 23:24:07 嶶風 阅读数:8664 标签: oracle 更多

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/S630730701/article/details/68938837

例: 游标 LOOP循环游标

SET SERVERIUTPUT ON

DECLARE

R_emp EMP%ROWTYPE;

CURSOR c_emp IS SELECT * FROM emp;

BEGIN

OPEN c_emp;

LOOP

FETCH c_emp INTO r_emp;

EXIT WHEN c_emp%NOTFOUND;

DBMS_OUT.PUT.PUT_LINE('Salary of Employee'||r_emp.ename||'is'|| r_emp.salary);

END LOOP;

CLOSE c_emp;

END;

带参数的游标

DECLARE

cursor c_columns(t_table_name varchar) is select column_name from user_tab_columns where table_name = t_table_name;

BEGIN

open c_columns('TABLE_NAME');

fetch c_columns into v_column;

if c_columns%found then

dbms_output.put_line('列名为:'||v_column);

end if;

close c_columns;

END;

第二种:使用while循环

open c1;

fetch c1 into v_name,v_job;

while c1%found loop

……

fetch c1 into v_name,v_job;

end loop;

close c1;

注意 这里用到了两个fetch语句!

第一个fetch语句是把游标的第一行记录赋值给相关变量,第二个fetch语句是让游标指向下一条记录。

如果没有第二个语句的话,即为死循环,不停地执行loop内的代码。

总之,使用while来循环处理游标是最复杂的方法。

第三种: for循环

for v_pos in c1 loop

v_name:= v_pos.ename;

v_job:= v_pos.ejob;

end loop;

可见for循环是比较简单实用的方法。

首先,它会自动open和close游标。解决了你忘记打开或关闭游标的烦恼。

其它,自动定义了一个记录类型及声明该类型的变量,并自动fetch数据到这个变量中。

我们需要注意v_pos 这个变量无需要在循环外进行声明,无需要为其指定数据类型。

它应该是一个记录类型,具体的结构是由游标决定的。

这个变量的作用域仅仅是在循环体内。

把v_pos看作一个记录变量就可以了,如果要获得某一个值就像调用记录一样就可以了。

如v_pos.pos_type

由此可见,for循环是用来循环游标的最好方法。高效,简洁,安全。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值