プロトタイプを含むパッケージにプロシージャがあります。
PROCEDURE simpleSearch(p_keyword IN VARCHAR2,
p_events OUT SYS_REFCURSOR);
パッケージ本体の私の定義は次のとおりです。
PROCEDURE simplesearch(p_keyword IN VARCHAR2,
p_events OUT SYS_REFCURSOR)
IS
BEGIN
OPEN p_events FOR
SELECT *
FROM event e, show s
WHERE s.eventid = e.id;
END simplesearch;
そして、それを実行すると、デバッグ画面が表示されます:
DECLARE
p_keyword VARCHAR2(200);
p_events REF cursor;
BEGIN
p_keyword := 'r';
package1.SIMPLESEARCH(
P_KEYWORD => p_keyword,
P_EVENTS => p_events
);
-- DBMS_OUTPUT.PUT_LINE('P_EVENTS = ' || P_EVENTS);
:P_EVENTS := p_events; -- <-- Cursor
--rollback;
END;
そして、それはエラーを出します PLS-00201: identifier 'CURSOR' must be declared
REF CURSOR
として宣言したにもかかわらず、カーソルの種類が に変更されるのはなぜSYS_REFCURSOR
ですか?