如何停止Plsql程序块

时间:2014-03-24 09:30:41

标签: sql oracle stored-procedures

如果在调用任何子过程时发生任何异常,我想停止plsql过程。

以下示例,

如果first_sub_proc给出任何异常,我想停止整个过程。我用过" return"声明在这里。但是没有用。总是,如果在first_sub_proc上发生任何事情,则执行first_sub_procdure的异常块。因此,它将返回main函数并开始处理second_sub_proc。

有什么建议吗?

create or replace 
package body testing_pk as

procedure first_sub_proc is 
  begin 
    dbms_output.put_line('Entering the first sub');
    execute immediate 'truncate table not_present';

  Exception when others then
    dbms_output.put_line('first sub  procedure exception ');
     -- *****Need to stop the entire process here ****
end;

procedure second_proc is 
  begin 
    dbms_output.put_line('Entering the Second sub');
    execute immediate 'truncate table not_present';
  Exception when others then
     dbms_output.put_line('second sub procedure exception ');
end;


procedure main_proc is 
   begin
     dbms_output.put_line('Entering main ');
     first_sub_proc();  
     second_proc();    

   Exception when others then
     dbms_output.put_line('Main procedure exception ');
 end;

1 个答案:

答案 0 :(得分:0)

而不是return尝试raiseraise_application_error(-20800, 'The dreaded thing has happened');

当然,程序应该停止的具体内容有点未定义。