嘗試創建基於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處於無效狀態
該函數是否說它已成功編譯或成功地發出警告?如果後者可以在之後立即執行「顯示錯誤」。你也可以稍後'顯示錯誤函數getmeeting',看看它爲什麼無效。但是當你可能得到'%notfound'時,你從'r_meeting'返回一個值,這在運行時可能是一個問題?也許更重要的是,將返回值聲明爲'varchar'而不是'varchar2'可能是個問題,但我不會這麼想的。 – 2013-05-12 13:40:36
這似乎沒有任何問題。用你的表格定義函數編譯並運行OK。你怎麼稱呼它沒有意義,但我認爲這是一個考驗。更新'r_meeting'值可能不正常,但似乎工作正常。 – 2013-05-12 13:51:47
它只是說:「功能創建」。試圖啓用顯示錯誤;導致編譯器去香蕉「遇到符號」SHOW「」 – user137263 2013-05-12 13:52:14