0
我試圖調試下面的代碼。我得到PLS-00103兩次。一旦在26行,並在35行一次。我已經試過註釋周圍的提升沒有數據發現異常和raise語句本身的if語句。我真的不知道我要去哪裏錯了。任何幫助將不勝感激。PLS-00103:遇到符號「;」當期待以下之一
CREATE OR REPLACE PROCEDURE viewingPercentageDif
(episodeKeyA IN NUMBER, episodeKeyB IN NUMBER)
IS
episodeOrderException EXCEPTION;
notConsecutiveException EXCEPTION;
preceedingEpisode NUMBER := 0;
subsequentEpisode NUMBER := 0;
percetageChange NUMBER :=0;
CURSOR episodeCursorA IS SELECT episode.ep_view_figures FROM episode WHERE episode.ep_suragate_pk = episodeKeyA;
CURSOR episodeCursorB IS SELECT episode.ep_view_figures FROM episode WHERE episode.ep_suragate_pk = episodeKeyB;
BEGIN
IF (episodeKeyA > episodeKeyB) THEN
RAISE episodeOrderException;
END IF;
BEGIN
OPEN episodeCursorA;
FETCH episodeCursorA INTO preceedingEpisode;
IF episodeCursorA%NOTFOUND THEN
RAISE NO_DATA_FOUND;
END IF;
CLOSE;-- line 26
END;
BEGIN
OPEN episodeCursorB;
FETCH episodeCursorB INTO preceedingEpisode;
IF episodeCursorA%NOTFOUND THEN
RAISE NO_DATA_FOUND;
END IF;
CLOSE;-- line 35
END;
-- this algorythm should be used for consective episodes only
-- need last and first episodes also
IF ((episodeKeyA + 1) = episodeKeyB) THEN
-- check if preceeding episode viewing figure is > or < subsequent episode
-- if preceeding episode < subequent then there has been an decrease
IF preceedingEpisode < subsequentEpisode THEN
percentageChange := subsequentEpisode - preceedingEpisode;
percentageChange := (percentageChange/subsequentEpisode) * 100;
DBMS_OUTPUT.PUT_LINE('Viewing figures have decreased by: ' || percentageChange || '%');
-- check for increase
ELSIF preceedingEpisode > subsequentEpisode THEN
percentageChange := preceedingEpisode - subsequentEpisode;
percentageChange := (percetageChange/subsequentEpisode) * 100;
DBMS_OUTPUT.PUT_LINE('Viewing figures have increased by: ' || percentageChange || '%');
END IF;
ELSE
RAISE notConsecutiveException;
END IF;
EXCEPTION
WHEN notConsecutiveException THEN
DBMS_OUTPUT.PUT_LINE('These episodes are not consecutive');
WHEN NO_DATA_FOUND THEN
DBMS_OUTPUT.PUT_LINE('NO DATA FOUND');
WHEN OTHERS THEN
RAISE_APPLICATION_ERROR(-20003, 'AN ERROR WAS ENCOUNTERED');
END viewingPercentageDif;
/
非常感謝! – user1763170 2013-05-01 16:55:36
@ user1763170 - 在StackOverflow的這裏,認爲禮貌接受一個答案,它爲您的問題提供瞭解決方案。爲此,請回答問題(哦,您已經在這裏),並且在答案總數的下方,您會注意到一個略有勾劃的複選標記。如果您在該複選標記內點擊,它將變成綠色,表示答案已被接受。如果你這樣做,回答得到15個聲望點的人。我們這些回答很多問題的人*會*注意是否有人接受答案。分享並享受。 – 2013-05-01 17:28:55
對不起,現在我會回顧其他我問過的問題,以確保人們得到正確的認可。 – user1763170 2013-05-01 18:30:21