[英]SQL script execution control
我正在寻找如何控制大型sql脚本执行的技巧。 它将包含各种DDL和DML语句。 大多数情况下,我一直在寻找DDL控件。我的意思是,基本上我有一个脚本,其中包含多个DDL语句,这些语句是从我们的一个DB生成的。 当我启动脚本时,即使在创建时出现编译错误或错误,它也会通过。 感谢任何想法
你想在错误后退出吗? 这是一些例子。 请务必查看WHENEVER SQLERROR的文档。
DDL(DML)示例:
prompt continues after error
prompt =====================
prompt
create table foo;
prompt quits after error with error code
prompt =================================
prompt
whenever sqlerror exit sql.sqlcode
create table foo;
prompt never gets here
prompt ===============
prompt
quit
PL / SQL子程序引发异常:
create or replace function foo return number as
foo_error exception;
begin
raise foo_error;
end;
/
show errors
prompt continues after error
prompt =====================
prompt
select foo from dual;
prompt quits after error with error code
prompt =================================
prompt
whenever sqlerror exit sql.sqlcode
select foo from dual;
prompt never gets here
prompt ===============
prompt
quit
PL / SQL单元编译失败:
create or replace procedure compile_function (f in varchar2) as
begin
execute immediate 'alter function :f compile' using f;
exception
when others then
raise_application_error(-20000, 'Failed to compile function ' || f);
end;
/
show errors
prompt continues after error
prompt =====================
prompt
create or replace function foo return number as
begin
compilation will fail
end;
/
show errors
exec compile_function('foo')
prompt quits after error with error code
prompt =================================
prompt
whenever sqlerror exit sql.sqlcode
create or replace function foo return number as
begin
compilation will fail
end;
/
show errors
exec compile_function('foo')
prompt never gets here
prompt ===============
prompt
quit
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.