PL/SQL IF文で条件を指定して条件分岐する
PL/SQL
でIF
やELSE
を使用して条件を分岐する方法を紹介します。
サンプルのSQL
はPL/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;
/
複数の条件を指定する
通常のSQL
のWHERE
句の条件などと同じ要領でAND
やOR
を使って指定します。
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;