您的位置:首页 > 其它

在包中使用游标变量

2013-09-17 09:34 99 查看
--创建包规范

CREATE OR REPLACE PACKAGE emp_data_action AS

    TYPE emp_type IS REF CURSOR RETURN emp%ROWTYPE;--定义强类型游标类型

    --定义使游标变量的子程序

    PROCEDURE getempbydeptno (emp_cur IN OUT emp_type,p_depotno NUMBER);

END emp_data_action;

--实现包体

CREATE OR REPLACE PACKAGE BODY emp_data_action AS

--创建在包规范中定义的过程

PROCEDURE getempbydeptno(emp_cur IN OUT emp_type,p_deptno NUMBER) IS

    emp_row emp%ROWTYPE;

    BEGIN

        OPEN emp_cur FOR SELECT * FROM emp WHERE deptno = p_deptno  --打开游标变量

        LOOP

            FETCH emp_cur INTO emp_row;                             --提取数据

            EXIT WHEN emp_cur%NOTFOUND;

            --输出游标数据

            DBMS_OUTPUT.put_line('员工名称:'||emp_row.ename||'部门编号:'||emp_row.deptno);

        END LOOP

        CLOSE emp_cur;

    END;

END;

END emp_data_action;

编译包时需要先对包规范进行编译,只有包规范编译通过后才能编译包体,在成功编译包后,可以用如下代码调用包中的过程;

DECLARE

    emp_cursors       emp_data_action.emp_type;--定义在包中定义的游标类型

BEGIN

    emp_data_action.getempbydeptno(emp_cursors,20);--调用在包中定义的过程

END;

   
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: