Oracle 中游标使用实例

一、游标简介:
    游标是PL&SQL中的一种控制结构。可以分为显式游标和隐式游标。pl&sql会为每一条select语句创建隐式游标。但是当我们需要处理多条数据时,我们就需要创建显式游标。注意:游标不是模式对象。

二、游标的几种常见属性:
1、%FOUND
--判断游标中是否还有数据,若有,返回true,否则,返回false。
2、%NOTFOUND
--与%FOUND 相反
3、%ISOPEN
--判断游标是否为打开状态
4、%ROWCOUNT
--记录已从游标中取出的记录数

三、游标应用实例:

1、%FOUND属性的使用

Java代码   收藏代码
  1. DECLARE  
  2. CURSOR mycur IS  
  3. SELECT * FROM student;  
  4. myrecord student%ROWTYPE;  
  5. BEGIN  
  6. OPEN mycur;  
  7. FETCH mycur INTO myrecord;  
  8. WHILE mycur%FOUND LOOP  
  9. DBMS_OUTPUT.PUT_LINE(myrecord.stuno||','||myrecord.stuname);  
  10. FETCH mycur INTO myrecord;  
  11. END LOOP;  
  12. CLOSE mycur;  
  13. END;  
 


2、%NOTFOUND属性的使用:

Sql代码   收藏代码
  1. DECLARE  
  2. CURSOR cur_para(id varchar2) IS  
  3. SELECT stuname FROM student WHERE stuno=111;  
  4. t_name student.stuname%TYPE;  
  5. BEGIN  
  6. OPEN cur_para(111);  
  7. LOOP  
  8. FETCH cur_para INTO t_name;  
  9. EXIT WHEN cur_para%NOTFOUND;  
  10. DBMS_OUTPUT.PUT_LINE(t_name);  
  11. END LOOP;  
  12. CLOSE cur_para;  
  13. END;  
 

3、for循环中游标的特殊使用:

Sql代码   收藏代码
  1. SQL> DECLARE  
  2.   2  CURSOR cur_para(id varchar2) IS  
  3.   3  SELECT stuname FROM student WHERE stuno=id;  
  4.   4  BEGIN  
  5.   5  DBMS_OUTPUT.PUT_LINE('*****');  
  6.   6  FOR cur IN cur_para('111') LOOP  
  7.   7  DBMS_OUTPUT.PUT_LINE(cur.stuname);  
  8.   8  END LOOP;  
  9.   9  END;  
 

4、%ISOPEN属性的使用:
Sql代码   收藏代码
  1. SQL> DECLARE  
  2.   2  t_name student.stuname%TYPE;  
  3.   3  CURSOR cur(id varchar2) IS  
  4.   4  SELECT stuname FROM student WHERE stuno=id;  
  5.   5  BEGIN  
  6.   6  IF cur%ISOPEN THEN  
  7.   7  DBMS_OUTPUT.PUT_LINE('THE cur has been opened');  
  8.   8  ELSE  
  9.   9  OPEN cur('111');  
  10. 10  END IF;  
  11. 11  FETCH cur INTO t_name;  
  12. 12  CLOSE cur;  
  13. 13  DBMS_OUTPUT.PUT_LINE(t_name);  
  14. 14  END;  
 

5、%ROWCOUNT属性的使用:
Sql代码   收藏代码
  1. SQL> DECLARE  
  2.   2  t_name VARCHAR2(10);  
  3.   3  CURSOR mycur IS  
  4.   4  SELECT stuname FROM student;  
  5.   5  BEGIN  
  6.   6  OPEN mycur;  
  7.   7  LOOP  
  8.   8  EXIT WHEN mycur%NOTFOUND OR mycur%NOTFOUND IS NULL;  
  9.   9  DBMS_OUTPUT.PUT_LINE('*****ROWCOUNT****'||mycur%ROWCOUNT);  
  10. 10  END LOOP;  
  11. 11  CLOSE mycur;  
  12. 12  END;  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值