码迷,mamicode.com
首页 > 数据库 > 详细

学习笔记-oracle-PL/SQL-动态游标

时间:2015-01-12 01:36:23      阅读:216      评论:0      收藏:0      [点我收藏+]

标签:

动态游标的分类:

一 强类型 :带RETURN语句的,只能为查询结果与ruturn类型相同的查询语句打开。

二 弱类型 :不带RERURN语句。可以为任何查询语句打开。

   

--使用动态游标的步骤

  1:定义REF动态游标类型。 2:声明ref动态游标。 3:打开ref动态游标。 4:关闭游标

1:定义REF动态游标

   语法:TYPE 〈类型名〉 IS REF CURSOR

            [RETURN <返回类型>] ;  --如果定义了返回类型,类型必须是RECORD类型。

2:声明ref动态游标

   语法:<游标名>  <游标类型> ;   --游标类型必须是自定义的ref类型

3:打开ref动态游标

   语法: OPEN 〈游标名〉 FOR 〈查询语句〉; --打开游标的时候需要确定查询语句。

4:关闭游标

  SLOSE 〈游标名〉;

--------示例,动态游标的用法

--动态游标,强类型游标,定义游标所要绑定数据表
DECLARE
TYPE ref_cur_emp IS REF CURSOR RETURN emp%Rowtype; --声明REF游标类型
rc_emp ref_cur_emp; --声明游标变量
emp_row emp%ROWTYPE;
BEGIN
OPEN rc_emp FOR --打开游标,并且绑定要查询的语句
SELECT * FROM emp;
LOOP
FETCH rc_emp INTO emp_row; --提取游标
EXIT WHEN rc_emp%NOTFOUND;
dbms_output.put_line(rc_emp%ROWCOUNT||‘ ‘||emp_row.empno||‘ ‘||emp_row.ename||‘ ‘||emp_row.sal);
END LOOP;
CLOSE rc_emp; --关闭游标
END;

--------------------------------------------

--动态游标,弱类型游标
DECLARE
TYPE ref_cur IS REF CURSOR; --声明REF游标类型
rc_emp ref_cur; --声明游标变量
emp_row emp%ROWTYPE;
v_no emp.empno%TYPE;
v_name emp.ename%TYPE;
v_sal emp.sal%TYPE;
v_dname dept.dname%TYPE;
BEGIN
OPEN rc_emp FOR --打开游标,并且绑定要查询的语句
SELECT * FROM emp;
dbms_output.put_line(‘员工信息表!‘);
LOOP
FETCH rc_emp INTO emp_row; --提取游标
EXIT WHEN rc_emp%NOTFOUND;
dbms_output.put_line(rc_emp%ROWCOUNT||‘ ‘||emp_row.empno||‘ ‘||emp_row.ename||‘ ‘||emp_row.sal);
END LOOP;
CLOSE rc_emp; --关闭游标

--对应多个查询语句
dbms_output.put_line(‘员工部门信息表!‘);
OPEN rc_emp FOR SELECT e.empno,e.ename,e.sal,d.dname
FROM emp e,dept d WHERE e.deptno = d.deptno;
LOOP
FETCH rc_emp INTO v_no,v_name,v_sal,v_dname;
EXIT WHEN rc_emp%NOTFOUND;
dbms_output.put_line(rc_emp%ROWCOUNT||‘ ‘||v_no||‘ ‘||v_name||‘ ‘||v_sal||‘ ‘||v_dname);
END LOOP;
END;

-----1显示游标一般用来循环获取结果集,能使fom游标就使用fom游标

       2隐式游标一般用来判断dml语句是否成功执行

       3 动态游标往往结合存储过程使用,如查询需要动态改变。

 

学习笔记-oracle-PL/SQL-动态游标

标签:

原文地址:http://www.cnblogs.com/hjiongjiong/p/4217584.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!