我正在尝试从一个显示表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;
答案 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
类型的参数,则无法执行此过程。