13.8 CASE文
CASE
文を使用すると、一連の条件を基に、対応する文を選択して実行できます。
単純なCASE
文は、単一の式を評価して、可能性のある複数の値と比較します。
検索CASE
文は、複数のブール式を評価して、値がTRUE
である最初の式を選択します。
ここでのトピック
構文
simple_case_statement ::=
セマンティクス
simple_case_statement
selector
値が1回評価され、複数の選択肢から1つ選択するためにその値が使用される式。selector
の値は、BLOB
、BFILE
またはユーザー定義型を除く任意のPL/SQL型になります。
WHEN selector_value THEN statement
selector_value
は、BLOB
、BFILE
またはユーザー定義型を除く任意のPL/SQL型の式になります。
selector_value
は順番に評価されます。selector_value
の値がselector
の値と等しい場合、そのselector_value
に関連付けられているstatement
が実行され、CASE
文は終了します。後続のselector_value
は評価されません。
注意:
statement
によってデータベースが変更され、非決定的なファンクションが起動される場合があります。C言語のswitch
文のようなfall-throughのメカニズムはありません。
ELSE statement [statement ]...
statement
は、selector
と同じ値を持つselector_value
が存在しない場合にのみ実行されます。
selector
と同じ値を持つselector_value
が存在しない場合にELSE
句を指定しないと、システムによって事前定義の例外CASE_NOT_FOUND
が呼び出されます。
label
文を識別するラベル(「statement ::=」および「label」を参照)。
searched_case_statement
WHEN boolean_expression THEN statement
boolean_expression
は順番に評価されます。boolean_expression
の値がTRUE
の場合、そのboolean_expression
に関連付けられているstatement
が実行され、CASE
文は終了します。後続のboolean_expression
は評価されません。
注意:
statement
によってデータベースが変更され、非決定的なファンクションが起動される場合があります。C言語のswitch
文のようなfall-throughのメカニズムはありません。
ELSE statement [statement ]...
statement
は、TRUE
の値を持つboolean_expression
が存在しない場合にのみ実行されます。
TRUE
の値を持つboolean_expression
が存在しない場合にELSE
句を指定しないと、システムによって事前定義の例外CASE_NOT_FOUND
が呼び出されます。
label
文を識別するラベル(「statement ::=」および「label」を参照)。
関連トピック
この章:
他の章:
関連項目:
-
NULLIF
ファンクションについては、『Oracle Database SQL言語リファレンス』を参照してください。 -
COALESCE
ファンクションについては、『Oracle Database SQL言語リファレンス』を参照してください。