変数の宣言部にサブプログラムを定義できる。
これによって単独のストアドプロシージャの内部もモジュール化することができる。
パッケージを利用したり、ストアドプロシージャの分割をするほどでもないような
簡単なロジックはこれを使うとよいかも。
サブプログラムを利用したストアドファンクション例
CREATE OR REPLACE FUNCTION HARADA_LAB4 (PA_CD IN CHAR) RETURN NUMBER AS --変数の定義 OUT_STRING VARCHAR2(200); --サブプログラムの定義 PROCEDURE SUB_HOGEHOGE ( PA_STR IN VARCHAR2, PA_OUTSTR OUT VARCHAR2 ) AS --この変数はサブプログラム内でのみ有効 WK_HOGE VARCHAR2(200); BEGIN PA_OUTSTR := PA_STR || ' + hogehoge '; EXCEPTION WHEN VALUE_ERROR THEN DBMS_OUTPUT.PUT_LINE('OUTPUT BUFFER NOT LONG ENOUGH.'); END; --本体の定義 BEGIN --サブプログラムの呼び出し1 SUB_HOGEHOGE('harada', OUT_STRING); DBMS_OUTPUT.PUT_LINE(OUT_STRING); --サブプログラムの呼び出し2 SUB_HOGEHOGE('go', OUT_STRING); DBMS_OUTPUT.PUT_LINE(OUT_STRING); RETURN 0; END; /
動作確認環境:oracle 10g