oracleでのGOTO文のサンプル。
また、ユーザ例外でも似たようなことができるので併せてメモ。
HARADA_LAB3.sql
CREATE OR REPLACE FUNCTION HARADA_LAB3 (PA_MESSAGE OUT VARCHAR2 ) RETURN NUMBER AS --例外の定義 USER_ABEND EXCEPTION; BEGIN DBMS_OUTPUT.PUT_LINE('proc start '); DBMS_OUTPUT.PUT_LINE('proc A '); --"HARADA_GOTO"ラベルへジャンプ GOTO HARADA_GOTO; DBMS_OUTPUT.PUT_LINE('proc B '); --ラベルの定義 <<HARADA_GOTO>> DBMS_OUTPUT.PUT_LINE('proc C '); --例外を発生させてEXCEPTIONへ RAISE USER_ABEND; DBMS_OUTPUT.PUT_LINE('proc D '); DBMS_OUTPUT.PUT_LINE('proc end '); RETURN 0; EXCEPTION WHEN USER_ABEND THEN DBMS_OUTPUT.PUT_LINE('proc abend '); RETURN 0; END; /
実行結果
proc start proc A proc C proc abend