ローカル・サブプログラム


変数の宣言部にサブプログラムを定義できる。
これによって単独のストアドプロシージャの内部もモジュール化することができる。


パッケージを利用したり、ストアドプロシージャの分割をするほどでもないような
簡単なロジックはこれを使うとよいかも。



サブプログラムを利用したストアドファンクション例

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