我在带有原型的包中有一个程序:
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
?