我试图在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