Collection Contents 前へ 次へ PDF

ASA SQL リファレンス・マニュアル

SQL 文

CASE 文


説明 

この文は、複数の状況に基づいた実行パスを選択するために使用します。

構文 1 

CASE value-expression
WHEN [ constant | NULL ] THEN statement-list ...
WHEN [ constant | NULL ] THEN statement-list ] ...
ELSE statement-list ]
END CASE

構文 2 

CASE
WHEN [ search-condition | NULLTHEN statement-list ...
WHEN [ search-condition | NULLTHEN statement-list ] ...
ELSE statement-list ]
END CASE

使用法 

構文 1    CASE 文は制御文であり、これを使用して SQL 文のリストから式の値に対応する文を選択して実行できます。value-expression は、文字列、数値、日付、その他の SQL データ型などの単一の値を取る式です。WHEN 句が value-expression の値に対して存在する場合、WHEN 句の中の statement-list が実行されます。適切な WHEN 句が存在せず、ELSE 句が存在する場合、ELSE 句の statement-list が実行されます。END CASE の後に記述されている最初の文から実行が再開されます。

value-expression が null でよい場合は、ISNULL 関数を使用して NULL の value-expression を異なる式で置き換えます。

ISNULL 関数の詳細については、ISNULL 関数 [データ型変換] を参照してください。

構文 2    このフォームの文は、CASE 文中で最初に条件と一致した search-condition に対して実行されます。条件と一致する search-conditions がない場合は、ELSE 句が実行されます。

式が NULL でもよい場合は、最初の search-condition に次の構文を使用します。

WHEN search-condition IS NULL THEN statement-list

NULL 値の詳細については、不定の値:NULL を参照してください。

CASE 文は CASE 式とは異なります。 
CASE 文の構文と CASE 式の構文を混同しないでください。

CASE 式の詳細については、CASE 式を参照してください。

パーミッション 

なし

関連する動作 

なし

参照 
標準と互換性 
 

case 文を使用する次の文は、サンプル・データベースの product テーブルにリストされている製品を、シャツ、帽子、ショート・パンツ、不明のいずれかに分類します。

CREATE PROCEDURE ProductType (IN product_id INT, OUT type CHAR(10))
BEGIN
   DECLARE prod_name CHAR(20);
   SELECT name INTO prod_name FROM "DBA"."product"
   WHERE id = product_id;
   CASE prod_name
   WHEN 'Tee Shirt' THEN
      SET type = 'Shirt'
   WHEN 'Sweatshirt' THEN
      SET type = 'Shirt'
   WHEN 'Baseball Cap' THEN
      SET type = 'Hat'
   WHEN 'Visor' THEN
      SET type = 'Hat'
   WHEN 'Shorts' THEN
      SET type = 'Shorts'
   ELSE
      SET type = 'UNKNOWN'
   END CASE;
END

次の例は、構文 2 を使用して、サンプル・データベース内の製品数量に関するメッセージを生成します。

CREATE PROCEDURE StockLevel (IN product_id INT)
BEGIN
   DECLARE qty INT;
   SELECT quantity INTO qty FROM product
   WHERE id = product_id;
   CASE
   WHEN qty < 30 THEN
      MESSAGE 'Order Stock' TO CLIENT;
   WHEN qty > 100 THEN
      MESSAGE 'Overstocked' TO CLIENT;
   ELSE
      MESSAGE 'Sufficient stock on hand' TO CLIENT;
   END CASE;
END

Collection Contents 前へ 次へ PDF