日期:2014-05-16  浏览次数:20994 次

oracle的cmd执行一个.sql文件,遇到异常时退出而不是继续执行
假设有一个1.sql文件,内容是

Declare
X varchar2(20);
Begin
Schema_name.proc_name('20140501',X);
Dbms_output.put_line(X);
End;
/

Declare
X varchar2(20);
Begin
Schema_name.proc_name('20140502',X);
Dbms_output.put_line(X);
End;
/

在执行的过程中,如果1号的数据跑失败了,就要退出,而不是继续执行2号的,这个怎么处理啊?

------解决方案--------------------
--加上exception捕获异常处理一下即可:

Declare
  X varchar2(20);
Begin
  Schema_name.proc_name('20140501',X);
  Dbms_output.put_line(X);
exception
  when others then
    Dbms_output.put_line('Error:'
------解决方案--------------------
X);
End;
/

Declare
  X varchar2(20);
Begin
  Schema_name.proc_name('20140502',X);
  Dbms_output.put_line(X);
exception
  when others then
    Dbms_output.put_line('Error:'
------解决方案--------------------
X);
End;
/

------解决方案--------------------
你可以用oracle客户端工具pl/sql devloper的控制台 
sql>@ "路径/xxx.sql";
回车,导入报错的话会有提示的。