zukucode
主にWEB関連の情報を技術メモとして発信しています。

PL/SQL パラメータで引数と戻り値を設定する

PL/SQLでストアドプロシージャのパラメータで引数と戻り値を設定する方法を紹介します。

他のプログラミング言語のファンクションを定義するのと同じように、パラメータを設定します。

戻り値を設定する

ストアドプロシージャでは、戻り値をRETURNすることができません。

なので、戻り値用に引数を用意して、その変数に値をセットするようにします。

以下はシステム日付をYYYYMMDD形式の文字列で取得するストアドプロシージャです。

パラメータ名 OUT 型の形式で指定します。

本来このような処理はプロシージャではなくファンクションで作成するべきですが、説明の都合であえてこの方法をとっています。

CREATE OR REPLACE PROCEDURE FOOBAR(OUT_PARAM1 OUT CHAR) AS

BEGIN
  -- 代入は = ではなく := で行います。また、処理の最後にセミコロン(;)を付けます。
  OUT_PARAM1 := TO_CHAR(SYSDATE, 'YYYYMMDD');
END;
/

複数の戻り値を設定する

複数の戻り値を設定するには、カンマで区切って指定します。

CREATE OR REPLACE PROCEDURE FOOBAR(OUT_PARAM1 OUT CHAR, OUT_PARAM2 OUT VARCHAR2) AS

BEGIN
  OUT_PARAM1 := TO_CHAR(SYSDATE, 'YYYYMMDD');
  OUT_PARAM2 := '2つめの戻り値';
END;
/

引数を設定する

入力されたパラメータに応じて処理を行いたいときは引数が必要です。

以下はYYYYMMDD形式の文字列を渡すと、その3ヶ月後の日付を返すプロシージャです。

パラメータ名 IN 型の形式で指定します。

CREATE OR REPLACE PROCEDURE FOOBAR(IN_PARAM1 IN CHAR, OUT_PARAM1 OUT CHAR) AS

BEGIN
  -- TO_DATEやADD_MONTHSなどは普通のSQL文で使用するのと同じ要領で指定します。
  OUT_PARAM1 := TO_CHAR(ADD_MONTHS(TO_DATE(IN_PARAM1), 3), 'YYYYMMDD');
END;
/

続きを表示

関連記事