一般會有以下三種方式 :
1) 利用 Exit, 但只有結束目前的迴圈, 然後會繼續該 Procedure/Trigger 的執行;
若是 Oracle ERP 的 request, 其執行 Status 會是 Normal.
2) 利用 Return, 但只有結束目前的 PL/SQL Block, 然後會繼續下一個 Procedure/Trigger;
若是 Oracle ERP 的 request, 其執行 Status 會是 Normal.
3) 利用 Raise_Application_Error, 且是整個程式都中斷;
若是 Oracle ERP 的 request, 其執行 Status 會是 Error.
範例 1
declare
procedure tom1 is
begin
dbms_output.put_line( 'Tom Test1 Start' );
for i in 1..5 loop
dbms_output.put_line( 'i:' || i );
if i = 2 then
exit;
end if;
end loop;
dbms_output.put_line( 'Tom Test1 End' );
dbms_output.put_line( '----------' );
end;
procedure tom2 is
begin
dbms_output.put_line( 'Tom Test2 Start' );
dbms_output.put_line( 'Tom Test2 End' );
dbms_output.put_line( '----------' );
end;
begin
tom1;
tom2;
begin
dbms_output.put_line( 'Tom Test3 Start' );
dbms_output.put_line( 'Tom Test3 End' );
end;
end;
/
-- 執行結果
Tom Test1 Start
i:1
i:2
Tom Test1 End
----------
Tom Test2 Start
Tom Test2 End
----------
Tom Test3 Start
Tom Test3 End
範例 2
declare
procedure tom1 is
begin
dbms_output.put_line( 'Tom Test1 Start' );
for i in 1..5 loop
dbms_output.put_line( 'i:' || i );
if i = 2 then
return;
end if;
end loop;
dbms_output.put_line( 'Tom Test1 End' );
dbms_output.put_line( '----------' );
end;
procedure tom2 is
begin
dbms_output.put_line( 'Tom Test2 Start' );
dbms_output.put_line( 'Tom Test2 End' );
dbms_output.put_line( '----------' );
end;
begin
tom1;
tom2;
begin
dbms_output.put_line( 'Tom Test3 Start' );
dbms_output.put_line( 'Tom Test3 End' );
end;
end;
/
-- 執行結果
Tom Test1 Start
i:1
i:2
Tom Test2 Start
Tom Test2 End
----------
Tom Test3 Start
Tom Test3 End
範例 3
declare
procedure tom1 is
begin
dbms_output.put_line( 'Tom Test1 Start' );
for i in 1..5 loop
dbms_output.put_line( 'i:' || i );
if i = 2 then
raise_application_error( -20001, 'Hello Error' );
end if;
end loop;
dbms_output.put_line( 'Tom Test1 End' );
dbms_output.put_line( '----------' );
end;
procedure tom2 is
begin
dbms_output.put_line( 'Tom Test2 Start' );
dbms_output.put_line( 'Tom Test2 End' );
dbms_output.put_line( '----------' );
end;
begin
tom1;
tom2;
begin
dbms_output.put_line( 'Tom Test3 Start' );
dbms_output.put_line( 'Tom Test3 End' );
end;
end;
/
-- 執行結果
Tom Test1 Start
i:1
i:2
錯誤報告 -
ORA-20001: Hello Error
ORA-06512: 在 line 9
ORA-06512: 在 line 24
以上, 提供參考囉 ^^.
