条件分岐 IF文
SQLでは記述できないIF文をPL/SQLなら記述することができます。
IF文の構文
IF
普通のIF文です。条件式を満たす場合に処理を行います。
「END IF」のあとのセミコロンを忘れやすいの注意してください\(^o^)/
IF <条件式> THEN <処理> END IF;
IF-ELSE
条件式を満たさない場合にELSEで指定している処理を行います。
IF <条件式> THEN <処理> ELSE <処理> END IF;
IF-ELSIF
条件式ごとに処理を分岐して処理を行います。
ちなみに「ELSIF」は、処理分岐分記述することができます。「ELSE」は省略可能です。
IF <条件式> THEN <処理> ELSIF <条件式> THEN <処理> [ELSIF <条件式> THEN <処理>] [ELSE <処理分>] END IF;
よく間違いやすいのが「ELSIF」です。紛らわしいですよね。。。「ELSEIF」ではないので気をつけましょう。
そしてごめんなさい自分も間違えて記事投稿してました。(´・ω・`)
IF文の実行例
IF実行例
DECLARE animal VARCHAR2(10) := 'いるか'; BEGIN IF animal = 'いるか' THEN DBMS_OUTPUT.PUT_LINE( 'animal:' || animal ); END IF; END; /
SQL> DECLARE 2 animal VARCHAR2(10) := 'いるか'; 3 BEGIN 4 IF animal = 'いるか' THEN 5 DBMS_OUTPUT.PUT_LINE( 'animal:' || animal ); 6 END IF; 7 END; 8 / animal:いるか PL/SQLプロシージャが正常に完了しました。
IF-ELSE実行例
DECLARE animal VARCHAR2(10) := 'いるか'; BEGIN IF animal = 'うさぎ' THEN DBMS_OUTPUT.PUT_LINE( '君はうさぎです' ); ELSE DBMS_OUTPUT.PUT_LINE( '君はうさぎではないです' ); END IF; END; /
SQL> DECLARE 2 animal VARCHAR2(10) := 'いるか'; 3 BEGIN 4 IF animal = 'うさぎ' THEN 5 DBMS_OUTPUT.PUT_LINE( '君はうさぎです' ); 6 ELSE 7 DBMS_OUTPUT.PUT_LINE( '君はうさぎではないです' ); 8 END IF; 9 END; 10 / 君はうさぎではないです PL/SQLプロシージャが正常に完了しました。
IF-ELSIF実行例
DECLARE animal VARCHAR2(20) := 'ぺんぎん'; BEGIN IF animal = 'いるか' THEN DBMS_OUTPUT.PUT_LINE( '君はいるかです' ); ELSIF animal = 'うさぎ' THEN DBMS_OUTPUT.PUT_LINE( '君はうさぎです' ); ELSE DBMS_OUTPUT.PUT_LINE( '君は' || animal ||'です' ); END IF; END; /
SQL> DECLARE 2 animal VARCHAR2(20) := 'ぺんぎん'; 3 BEGIN 4 IF animal = 'いるか' THEN 5 DBMS_OUTPUT.PUT_LINE( '君はいるかです' ); 6 ELSIF animal = 'うさぎ' THEN 7 DBMS_OUTPUT.PUT_LINE( '君はうさぎです' ); 8 ELSE 9 DBMS_OUTPUT.PUT_LINE( '君は' || animal ||'です' ); 10 END IF; 11 END; 12 / 君はぺんぎんです PL/SQLプロシージャが正常に完了しました。
コメント