CASE文を使用すると、一連の条件を基に、対応する文を選択して実行できます。
単純なCASE文は、単一の式を評価して、可能性のある複数の値と比較します。
検索CASE文は、複数のブール式を評価して、値がTRUEである最初の式を選択します。
ここでのトピック
セマンティクス
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」を参照)。