在没有创建类型oracle 11g的情况下,从pl / sql中的函数返回数据作为游标

时间:2013-11-24 06:57:02

标签: oracle function plsql cursor

我在pl / sql中编写了这段代码,但我无法回答。

  create or replace function mostafa.sbs_Topic_LedgerBalance8Column
   (BranchID number,DateFrom number,DateTo number) 
 RETURN SYS_REFCURSOR 
  IS  O_RESULT SYS_REFCURSOR;

  BEGIN
  open O_RESULT for
     Select s* From Mostafa.topic ;


      RETURN O_RESULT;

end sbs_Topic_LedgerBalance8Column;

我这样打电话:

DECLARE v_refcursor SYS_REFCURSOR;

BEGIN
v_refcursor :=mostafa.sbs_topic_ledgerbalance8column(12,12,12);

FOR employee_rec IN v_refcursor
   LOOP
      DBMS_OUTPUT.put_line (
         employee_rec.ID);
   END LOOP;
end;

为什么在检索结果时出现错误?

错误是:v_refcursor不是过程或未定义

1 个答案:

答案 0 :(得分:1)

使用refcursor时,无法使用游标for循环访问它。请改用以下内容(未经测试):

DECLARE
    v_refcursor SYS_REFCURSOR;
    v_emp_rec topic%ROWTYPE;

BEGIN
    v_refcursor :=mostafa.sbs_topic_ledgerbalance8column(12,12,12);

    LOOP
        FETCH v_refcursor INTO v_emp_rec;
        EXIT WHEN v_refcursor%NOTFOUND;
        DBMS_OUTPUT.PUT_LINE(v_emp_rec.id);
    END LOOP;
    close v_refcursor;
END;