尝试创建基于pl/sql游标的函数以从Oracle数据库返回详细信息。Oracle包或函数处于无效状态
相关表格,MEETING,有列 MEETING_ID:数(10),TIME:时间戳(4),TITLE:VARCHAR(20)
CREATE OR REPLACE FUNCTION GetMeeting
(meetingnumber MEETING.MEETING_ID%TYPE)
RETURN VARCHAR
IS
CURSOR current_meeting(meetingnumber MEETING.MEETING_ID%TYPE)
IS
SELECT TITLE, TIME
FROM MEETING
WHERE MEETING_ID = meetingnumber;
r_meeting current_meeting%ROWTYPE;
BEGIN
OPEN current_meeting(meetingnumber);
FETCH current_meeting INTO r_meeting;
IF current_meeting%NOTFOUND THEN
r_meeting.TITLE := 'UNKNOWN APPOINTMENT';
END IF;
CLOSE current_meeting;
RETURN r_meeting.TITLE;
END;
SELECT GetMeeting (27) name
FROM MEETING;
的功能似乎编译正常 - 但是当所谓抛出
ORA-06575:包装或功能GETMEETING处于无效状态
+0
该函数是否说它已成功编译或成功地发出警告?如果后者可以在之后立即执行“显示错误”。你也可以稍后'显示错误函数getmeeting',看看它为什么无效。但是当你可能得到'%notfound'时,你从'r_meeting'返回一个值,这在运行时可能是一个问题?也许更重要的是,将返回值声明为'varchar'而不是'varchar2'可能是个问题,但我不会这么想的。 –
2013-05-12 13:40:36
+0
这似乎没有任何问题。用你的表格定义函数编译并运行OK。你怎么称呼它没有意义,但我认为这是一个考验。更新'r_meeting'值可能不正常,但似乎工作正常。 –
2013-05-12 13:51:47
+0
它只是说:“功能创建”。试图启用显示错误;导致编译器去香蕉“遇到符号”SHOW“” –
2013-05-12 13:52:14