从过程返回游标

时间:2012-12-08 17:17:15

标签: sql oracle

我正在尝试从一个显示表invoice内容的过程返回一个游标。包和程序已成功创建,但是当我运行该行 - Exec CursorPckg.CursorTest_Proc();时,我收到以下错误component 'CURSORTEST_PROC' must be declared任何想法?我正在运行SQL * PLUS

CREATE or REPLACE PACKAGE CursorPckg
IS
  TYPE salary_type IS REF CURSOR RETURN Invoice%ROWTYPE;
END CursorPckg;

CREATE OR REPLACE PACKAGE BODY CursorPckg AS
  PROCEDURE CursorTest_Proc (c1 OUT CursorPckg.salary_type) 
  IS
  BEGIN
    OPEN c1 FOR 
    SELECT * FROM Invoice;
  END CursorTest_Proc;
END CursorPckg;

1 个答案:

答案 0 :(得分:2)

您需要在包声明中添加过程声明,以便可以从包外部访问它。 像这样:

CREATE or REPLACE PACKAGE CursorPckg
IS
TYPE salary_type IS REF CURSOR RETURN Invoice%ROWTYPE;
PROCEDURE CursorTest_Proc (c1 OUT CursorPckg.salary_type);
END CursorPckg;

修改

回答你的评论。如果不提供CursorPckg.salary_type类型的参数,则无法执行此过程。