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;
/