SQL 解説書

IF ステートメント

IF ステートメントは、条件の評価に基づいて実行パスを選択します。

構文

>>-IF--search-condition--THEN----------------------------------->
 
      .-------------------------------.
      V                               |
>--------SQL-procedure-statement--;---+------------------------->
 
      .--------------------------------------------------------------------------.
      V                                                                          |
>--------+--------------------------------------------------------------------+--+>
         |                                 .-------------------------------.  |
         |                                 V                               |  |
         '-ELSEIF--search-condition--THEN-----SQL-procedure-statement--;---+--'
 
>-----+------------------------------------------+--END IF-----><
      |       .-------------------------------.  |
      |       V                               |  |
      '-ELSE-----SQL-procedure-statement--;---+--'
 

説明

search-condition
SQL ステートメントを呼び出す条件を指定します。 条件が不定または偽の場合、条件が真になるか、または処理がELSE 文節に到達するまで、 処理は次の検索条件に継続されます。

SQL-procedure-statement
前の search-condition が真の場合に呼び出されるステートメントを指定します。 真と評価される search-condition がない場合、 ELSE キーワードの後に続く SQL-procedure-statement が呼び出されます。

以下の SQL プロシージャーでは、 2 つの IN パラメーター (従業員番号 employee_number および従業員評定 rating) を使用します。 rating の値によっては、 employee 表の salary および bonus 列が、新しい値に更新されます。

     CREATE PROCEDURE UPDATE_SALARY_IF
        (IN employee_number CHAR(6), INOUT rating SMALLINT)
        LANGUAGE SQL
        BEGIN
          DECLARE not_found CONDITION FOR SQLSTATE '02000';
           DECLARE EXIT HANDLER FOR not_found
              SET rating = -1;
           IF rating = 1
              THEN UPDATE employee
              SET salary = salary * 1.10, bonus = 1000
              WHERE empno = employee_number;
           ELSEIF rating = 2 
              THEN UPDATE employee
              SET salary = salary * 1.05, bonus = 500
              WHERE empno = employee_number;
           ELSE UPDATE employee
              SET salary = salary * 1.03, bonus = 0
              WHERE empno = employee_number;
              END IF;
          END


[ ページのトップ | 前ページ | 次ページ | 目次 | 索引 ]