-1

テーブルの内容を表示するプロシージャからカーソルを返そうとしています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;
4

1 に答える 1

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;

編集:

あなたのコメントに答える。type のパラメーターを指定しないと、このプロシージャを実行できませんCursorPckg.salary_type

于 2012-12-08T17:51:52.880 に答える