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

PL/SQL IF文で条件を指定して条件分岐する

PL/SQLIFELSEを使用して条件を分岐する方法を紹介します。

サンプルのSQLPL/SQL 変数を宣言して値を設定するで扱ったものに対して修正しています。

以下のSQLはパラメータ(IN_PARAM2)の値によって処理を分岐しています。

ELSE IFではなくELSIFなので注意が必要です。

また、END IFの最後に;をつけるのを忘れないようにします。

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

/*変数を宣言*/
MON NUMBER := 3;
NEW_DATE CHAR(8);

BEGIN
  IF IN_PARAM2 = 1 THEN
    NEW_DATE := TO_CHAR(ADD_MONTHS(TO_DATE(IN_PARAM1), MON), 'YYYYMMDD');
  ELSIF IN_PARAM2 = 2 THEN
    NEW_DATE := TO_CHAR(ADD_MONTHS(TO_DATE(IN_PARAM1), -MON), 'YYYYMMDD');
  ELSE
    NEW_DATE := NULL;
  END IF;

  OUT_PARAM1 := NEW_DATE;
END;
/

複数の条件を指定する

通常のSQLWHERE句の条件などと同じ要領でANDORを使って指定します。

IF IN_PARAM2 = 1 AND LENGTH(IN_PARAM1) = 8 THEN
  NEW_DATE := TO_CHAR(ADD_MONTHS(TO_DATE(IN_PARAM1), MONTHS), 'YYYYMMDD');
ELSIF IN_PARAM2 = 2 OR IN_PARAM2 = 3 THEN
  NEW_DATE := TO_CHAR(ADD_MONTHS(TO_DATE(IN_PARAM1), -MONTHS), 'YYYYMMDD');
ELSE
  NEW_DATE := NULL;
END IF;

続きを表示

関連記事