我試圖在PL/SQL腳本的開頭對數據庫模式進行一些檢查。PL/SQL:是否有一條指令可以完全停止腳本執行?
如果檢查結果不成功,我想停止腳本,以防止執行下一條指令。
我有這樣的事情
-- 1st line of PL/SQL script
DECLARE
SOME_COUNT INTEGER;
BEGIN
SELECT COUNT(*) INTO SOME_COUNT FROM SOME_TABLE WHERE <SOME_CONDITIONS>;
IF (SOME_COUNT > 0) THEN
DBMS_OUTPUT.PUT_LINE('Test failed, I don''want the rest of the script'
|| ' to be executed.');
--EXIT or something like that?... <= STOP EXECUTION HERE
END IF;
END;
/
-- OTHER SQL INSTRUCTIONS...
ALTER TABLE SOME_TABLE ...
我在尋找讓做 「STOP EXECUTION HERE
」 指令(S)。
你真的在談論PL/SQL腳本嗎?或者一個SQL * Plus腳本?你不能在PL/SQL中有一個DDL語句(除非你把它放在'EXECUTE IMMEDIATE'中)。所以在我看來你正在談論一個SQL * Plus腳本。如果你正在談論一個SQL * Plus腳本,如果PL/SQL塊出錯,SQL * Plus將默認繼續執行腳本中的下一個SQL語句(或PL/SQL塊)。您需要使用SQL * Plus命令「WHENEVER SQLERROR EXIT」。 – 2012-01-18 10:10:53
感謝您對賈斯汀的評論。事實上,即使我對DBMS有一般的瞭解,我也不是「Oracle專家」。因此,我還沒有把握PL/SQL或SQL * Plus腳本之間的區別(你知道一些博客/ doc /網站清楚地說明了這種差異嗎?)。我可以告訴的是,我正在使用** Navicat **,使用「查詢」窗格並加載我的腳本文件。在那個特定的上下文中,'RAISE_APPLICATION_ERROR()'完成這項工作。 – 2012-01-18 10:40:47