Oracle 中游标使用实例

本文介绍了PL/SQL中的游标概念及其应用场景,包括显式游标与隐式游标的区别,详细解释了%FOUND、%NOTFOUND、%ISOPEN、%ROWCOUNT等游标属性,并通过多个实例展示了如何在PL/SQL中有效地使用这些特性。

一、游标简介:

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

二、游标的几种常见属性:

1、%FOUND

--判断游标中是否还有数据,若有,返回true,否则,返回false。

2、%NOTFOUND

--与%FOUND 相反

3、%ISOPEN

--判断游标是否为打开状态

4、%ROWCOUNT

--记录已从游标中取出的记录数

三、游标应用实例:

1、%FOUND属性的使用

DECLARE
CURSOR mycur IS
SELECT * FROM student;
myrecord student%ROWTYPE;
BEGIN
OPEN mycur;
FETCH mycur INTO myrecord;
WHILE mycur%FOUND LOOP
DBMS_OUTPUT.PUT_LINE(myrecord.stuno||','||myrecord.stuname);
FETCH mycur INTO myrecord;
END LOOP;
CLOSE mycur;
END;

2、%NOTFOUND属性的使用:

DECLARE
CURSOR cur_para(id varchar2) IS
SELECT stuname FROM student WHERE stuno=111;
t_name student.stuname%TYPE;
BEGIN
OPEN cur_para(111);
LOOP
FETCH cur_para INTO t_name;
EXIT WHEN cur_para%NOTFOUND;
DBMS_OUTPUT.PUT_LINE(t_name);
END LOOP;
CLOSE cur_para;
END;

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


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

4、%ISOPEN属性的使用:

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

5、%ROWCOUNT属性的使用:

SQL> DECLARE
2 t_name VARCHAR2(10);
3 CURSOR mycur IS
4 SELECT stuname FROM student;
5 BEGIN
6 OPEN mycur;
7 LOOP
8 EXIT WHEN mycur%NOTFOUND OR mycur%NOTFOUND IS NULL;
9 DBMS_OUTPUT.PUT_LINE('*****ROWCOUNT****'||mycur%ROWCOUNT);
10 END LOOP;
11 CLOSE mycur;
12 END;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值