用proc返回cursor

本文介绍如何使用PL/SQL的Procedure和Cursor机制从Oracle数据库中查询并输出特定部门的员工信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天有人在问proc返回cursor的问题,下面给个示例


通过out返回cursor

CREATE OR REPLACE PROCEDURE getcity(v_citycode IN VARCHAR2,
                                    ref_cursor OUT SYS_REFCURSOR AS
BEGIN
  OPEN ref_cursor FOR
    SELECT * FROM emp WHERE deptno = v_citycode;
END;


下面是引用方法
SET serveroutput on
DECLARE
  v_ref_cursor SYS_REFCURSOR;
  v_emp        emp%ROWTYPE;
BEGIN
  getcity(10, v_ref_cursor);
  LOOP
    FETCH v_ref_cursor
      INTO v_emp;
    EXIT WHEN v_ref_cursor%NOTFOUND;
    dbms_output.put_line('empno:' || v_emp.empno || '  ename:' || v_emp.ename);
  END LOOP;
END;
/
结果

SQL> SET serveroutput on
SQL> DECLARE
  2    v_ref_cursor SYS_REFCURSOR;
  3    v_emp        emp%ROWTYPE;
  4  BEGIN
  5    getcity(10, v_ref_cursor);
  6    LOOP
  7      FETCH v_ref_cursor
  8        INTO v_emp;
  9      EXIT WHEN v_ref_cursor%NOTFOUND;
 10      dbms_output.put_line('empno:' || v_emp.empno || '  ename:' || v_emp.ename);
 11    END LOOP;
 12  END;
 13  /
empno:7782  ename:CLARK
empno:7839  ename:KING
empno:7934  ename:MILLER
PL/SQL procedure successfully completed


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值