loveEVERYday 发表于 2013-1-14 08:49:07

Oracle 中游标使用实例

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

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

三、游标应用实例:

1、%FOUND属性的使用
 
 
DECLARECURSOR mycur ISSELECT * FROM student;myrecord student%ROWTYPE;BEGINOPEN mycur;FETCH mycur INTO myrecord;WHILE mycur%FOUND LOOPDBMS_OUTPUT.PUT_LINE(myrecord.stuno||','||myrecord.stuname);FETCH mycur INTO myrecord;END LOOP;CLOSE mycur;END;  

2、%NOTFOUND属性的使用:
DECLARECURSOR cur_para(id varchar2) ISSELECT stuname FROM student WHERE stuno=111;t_name student.stuname%TYPE;BEGINOPEN cur_para(111);LOOPFETCH 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> DECLARE2CURSOR cur_para(id varchar2) IS3SELECT stuname FROM student WHERE stuno=id;4BEGIN5DBMS_OUTPUT.PUT_LINE('*****');6FOR cur IN cur_para('111') LOOP7DBMS_OUTPUT.PUT_LINE(cur.stuname);8END LOOP;9END; 

4、%ISOPEN属性的使用:
SQL> DECLARE2t_name student.stuname%TYPE;3CURSOR cur(id varchar2) IS4SELECT stuname FROM student WHERE stuno=id;5BEGIN6IF cur%ISOPEN THEN7DBMS_OUTPUT.PUT_LINE('THE cur has been opened');8ELSE9OPEN cur('111');10END IF;11FETCH cur INTO t_name;12CLOSE cur;13DBMS_OUTPUT.PUT_LINE(t_name);14END; 

5、%ROWCOUNT属性的使用:
SQL> DECLARE2t_name VARCHAR2(10);3CURSOR mycur IS4SELECT stuname FROM student;5BEGIN6OPEN mycur;7LOOP8EXIT WHEN mycur%NOTFOUND OR mycur%NOTFOUND IS NULL;9DBMS_OUTPUT.PUT_LINE('*****ROWCOUNT****'||mycur%ROWCOUNT);10END LOOP;11CLOSE mycur;12END;  
页: [1]
查看完整版本: Oracle 中游标使用实例