13.31

式は、オペランド(変数、定数、リテラル、演算子、ファンクション起動およびプレースホルダ)の任意の組合せです。

最も単純な式は、1個の変数で構成されています。

PL/SQLコンパイラは、式を構成するオペランドおよび演算子の型から、式のデータ型を決定します。式が評価されたときは、その型の1つの値が結果として得られます。

ここでのトピック

構文

boolean_literal ::=

conditional_predicate ::=

collection_constructor ::=

numeric_expression ::=

function_call ::=

qualified_expression ::=

positional_choice_list ::=

explicit_choice_list ::=

named_choice_list ::=

indexed_choice_list ::=

simple_case_expression ::=

セマンティクス

boolean_expression

値がTRUEFALSEまたはNULLの式です。詳細は、「ブール式」を参照してください。

boolean_expressionの制限

SQLにはBOOLEANに相当するデータ型がないため、次の操作は実行できません。

  • データベース表の列にBOOLEAN値を割り当てる操作

  • データベース表の列の値を選択またはフェッチしてBOOLEAN変数に入れる操作

  • SQLファンクションでBOOLEAN値を使用する操作

    (ただし、例3-3に示すように、SQL問合せはBOOLEANパラメータを持つPL/SQLファンクションを起動できます。)

  • SQL文(SQL問合せで起動されるPL/SQLファンクションの引数を除く)またはPL/SQL無名ブロックでのBOOLEAN式の使用

    注意:

    静的SQL問合せで起動されるPL/SQLファンクションの引数は、BOOLEANリテラルにできません。これを回避するには、例3-3に示すように、リテラルを変数に割り当ててからその変数をファンクションに渡します。

NOT、AND、OR

論理演算子を参照してください。

boolean_constant

BOOLEAN型の定数の名前。

boolean_function_call

BOOLEAN値を戻す、事前に定義されたファンクションの起動。セマンティクスの詳細は、function_callを参照してください。

boolean_variable

BOOLEAN型の変数の名前。

conditional_predicate

「トリガーを起動したDML文を検出する条件述語」を参照してください。

other_boolean_form

collection

コレクション変数の名前。

EXISTS

collectionindex番目の要素が存在する場合はTRUE、それ以外の場合はFALSEを戻すコレクション・メソッド(ファンクション)。詳細は、「EXISTSコレクション・メソッド」を参照してください。

EXISTSの制限

collectionが連想配列の場合は、EXISTSは使用できません。

index

データ型PLS_INTEGERまたはPLS_INTEGERに暗黙的に変換可能なデータ型を持つ数式である必要があります(後者の詳細は「PLS_INTEGERの事前定義のサブタイプ」を参照してください)。

IS [NOT] NULL

「IS [NOT] NULL演算子」を参照してください。

BETWEEN expression AND expression

BETWEEN演算子を参照してください。

IN expression [, expression ]...

IN演算子を参照してください。

LIKE pattern

LIKE演算子を参照してください。

relational_operator

関係演算子を参照してください。

SQL

直前に実行されたSELECT文またはDML文に関連付けられた暗黙カーソル。詳細は、「暗黙カーソル」を参照してください。

%FOUND、%ISOPEN、%NOTFOUND

「暗黙カーソル属性」および「名前付きカーソル属性」で説明されているカーソル属性。

character_expression

文字データ型(CHARファミリのデータ型)の値を持つ式(「CHARデータ型ファミリ」を参照)。

character_constant

文字データ型の定数の名前。

character_function_call

文字データ型または暗黙的に文字データ型に変換可能な値を戻す、事前に定義されたファンクションの起動。セマンティクスの詳細は、function_callを参照してください。

character_literal

文字データ型のリテラル。

character_variable

文字データ型の変数の名前。

||

連結演算子で、ある文字列オペランドを別の文字列オペランドに追加します。詳細は、「連結演算子」を参照してください。

collection_constructor

指定された値を持つ要素を使用して、指定された型のコレクションを構成します。

詳細は、「コレクションのコンストラクタ」を参照してください。

collection_type

事前に宣言されているネストした表型またはVARRAY型の名前(結合配列型ではありません)。

value

collection_typeのコレクション要素の有効な値。

collection_typeがVARRAY型の場合は最大サイズがあり、値の数はこのサイズを超えることができません。collection_typeがネストした表型の場合は、最大サイズがありません。

値を指定しないと、構成されるコレクションはNULLではなく空になります(emptynullの違いは、「コレクション型」を参照してください)。

date_expression

日付データ型(DATEファミリのデータ型)の値を持つ式(「DATEデータ型ファミリ」を参照)。

date_constant

日付データ型の定数の名前。

date_function_call

日付データ型の値または暗黙的に日付データ型に変換可能な値を戻す、事前に定義されたファンクションの起動。セマンティクスの詳細は、function_callを参照してください。

date_literal

日付データ型の値または暗黙的に日付データ型に変換可能な値を持つリテラル。

date_variable

日付データ型の変数の名前。

+, -

加算と減算の演算子。

numeric_expression

日付数値型(DATEファミリのデータ型)の値を持つ式(「NUMBERデータ型ファミリ」を参照)。

+, -, /, *, **

加算、減算、除算、乗算、指数の演算子。

numeric_subexpression

collection

コレクション変数の名前。

COUNT、FIRST、LAST、LIMIT、NEXT、PRIOR

コレクション・メソッドの詳細は、「コレクション・メソッドの起動」を参照してください。

named_cursor%ROWCOUNT

「名前付きカーソル属性」を参照してください。

numeric_constant

数値データ型の定数の名前。

numeric_function_call

数値データ型の値または暗黙的に数値データ型に変換可能な値を戻す、事前に定義されたファンクションの起動。セマンティクスの詳細は、function_callを参照してください。

numeric_literal

数値データ型のリテラル。

numeric_variable

数値データ型の変数の名前。

SQL%ROWCOUNT

「暗黙カーソル属性」で説明されているカーソル属性。

SQL%BULK_ROWCOUNT]

「SQL%BULK_ROWCOUNT」で説明されているカーソル属性。

exponent

数式。

function_call

function

事前に定義されたファンクションの名前。

parameter [, parameter ]...

コールされているファンクションの実パラメータのリスト。各実パラメータのデータ型は、対応する仮パラメータのデータ型と互換性がある必要があります。使用できる実パラメータは仮パラメータのモードで決まります。

仮パラメータのモード 実パラメータ

IN

定数、初期化された変数、リテラルまたは式

OUT

データ型がNOT NULLとして定義されていない変数

IN OUT

変数(通常は、文字列バッファまたは数値アキュムレータ)

ファンクションによってパラメータのデフォルト値が指定される場合は、パラメータ・リストでそのパラメータを省略できます。ファンクションにパラメータがない場合、またはファンクションによってすべてのパラメータにデフォルト値が指定される場合は、パラメータ・リストを省略するか、または空のパラメータ・リストを指定することができます。

qualified_expression

RECORD型の修飾式は、RECORD型の式が許可されている任意のコンテキストで使用できます。

連想配列型の修飾式は、連想配列型の式が許可されている任意のコンテキストで使用できます。

typemark ( aggregate )

集計(修飾項目)の型を明示的に指定します。

typemark

type_name

修飾式は明示的な型の指定を使用することで修飾項目の型を指定します。この明示的な指定はtypemarkと呼ばれるものです。

identifier [ . ]

修飾項目の型を示します。

aggregate

修飾式は式要素を組み合せて、RECORD型または連想配列型の値を作成します。

positional_choice_list

expr [ , ]

RECORD型の修飾式では位置関連付けを使用できます。

位置関連付けが同じ構造体内の名前関連付けに従っていない場合もあります(その逆も同様です)。

explicit_choice_list

named_choice_list | indexed_choice_list

名前関連付けでは修飾する構造型からのフィールドの名前を使用する必要があります。索引キーの値は修飾するベクトル型の索引の型と互換している必要があります。

named_choice_list

名前指定選択は構造型にのみ適用されます。

identifier => expr [ , ]

RECORD型の修飾式に名前関連付けを使用できます。

indexed_choice_list

索引選択は、ベクトル型にのみ適用されます。

expr => expr [ , ]

索引指定選択(キーと値のペア)を連想配列型の修飾式で使用できます。キーおよび値に式を使用することができます。

連想配列型の構造体で、NULLを索引キー値として使用することはできません。

searched_case_expression

WHEN boolean_expression THEN result

boolean_expressionは順番に評価されます。boolean_expressionの値がTRUEである場合は、boolean_expressionに関連付けられているresultが戻されます。後続のboolean_expressionは評価されません。

ELSE result

resultは、値がTRUEboolean_expressionが存在しない場合にのみ戻されます。

ELSE句を省略すると、検索CASE式ではNULLが戻されます。

関連項目:

検索CASE文

simple_case_expression

selector

BLOBBFILEまたはユーザー定義型を除くPL/SQL型の式。selectorは1回評価されます。

WHEN selector_value THEN result

selector_valueは順番に評価されます。selector_valueselectorの値である場合は、selector_valueに関連付けられているresultが戻されます。後続のselector_valueは評価されません。

selector_valueは、BLOBBFILE、ADT、PL/SQLレコード、結合配列、VARRAYまたはネストした表を除く任意のPL/SQL型にできます。

ELSE result

resultは、selectorと同じ値を持つselector_valueが存在しない場合にのみ戻されます。

ELSE句を省略すると、単純なcase式ではNULLが戻されます。

注意:

すべてのresult (ELSE句内のresultを含む)に対してリテラルNULLを指定すると、エラーPLS-00617が発生します。

関連項目:

単純なCASE文

  • 例2-28連結演算子の例

  • 例2-30カッコを使用した評価順序の制御

  • 例2-31ネストしたカッコを使用した式

  • 例2-32カッコを使用した読みやすさの向上

  • 例2-33演算子の優先順位

  • 例2-43式での関係演算子

  • 例2-44式でのLIKE演算子

  • 例2-46式でのBETWEEN演算子

  • 例2-47式でのIN演算子

  • 例2-50単純なCASE式

  • 例2-52検索CASE式

  • 例9-1トリガーによる条件述語を使用したトリガーを起動する文の検出