2012-12-08 67 views
-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; 

回答

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類型的參數,則無法執行此過程。

+0

如何執行程序,我試過這一行但它不起作用: –

+0

執行CursorPckg.CursorTest_Proc(); –

+0

@Nidhin_toms你的錯誤是什麼? –