式は、オペランド(変数、定数、リテラル、演算子、ファンクション・コールおよびプレースホルダ)の任意の組合せです。 最も単純な式は、1個の変数で構成されています。
PL/SQLコンパイラは、式を構成するオペランドおよび演算子の型から、式のデータ型を決定します。 式が評価されたときは、その型の1つの値が結果として得られます。
構文
expression ::=
boolean_expression ::=
other_boolean_form ::=
character_expression ::=
numeric_subexpression ::=
date_expression ::=
numeric_expression ::=
simple_case_statement ::=
searched_case_expression ::=
キーワードとパラメータの説明
この比較演算子は、ある値が指定範囲の中にあるかどうかをテストします。 つまり、下限以上、上限以下にあるかどうかがテストされます。
boolean_constant_name
BOOLEAN
型の定数を指定します。このような定数は、TRUE
、FALSE
、またはNULL
に初期化される必要があります。 ブール定数に対する算術演算は許可されていません。
boolean_expression
値がブール値(TRUE
、FALSE
またはNULL
)の式です。
boolean_function_call
ブール値を戻すファンクションへのコールです。
boolean_literal
事前定義の値TRUE
、FALSE
、またはNULL
(存在しない値、不明な値または適用できない値を表す)です。 データベース列に値TRUE
やFALSE
を挿入できません。
boolean_variable_name
BOOLEAN
型の変数を識別します。 BOOLEAN
変数に代入できるのは、値TRUE
、FALSE
およびNULL
のみです。 列の値を選択またはフェッチしてBOOLEAN
変数に入れることはできません。 BOOLEAN
変数に対する算術演算も許可されていません。
%BULK_ROWCOUNT
FORALL
文で使用するように設計された、暗黙カーソルSQL
の複合属性です。 詳細は、「SQLの(暗黙)カーソル属性」を参照してください。
character_constant_name
文字値を格納する、事前に宣言された定数を識別します。 この定数は、文字値または暗黙的に文字値に変換可能な値に初期化される必要があります。
character_expression
文字または文字列を戻す式です。
character_function_call
文字値または暗黙的に文字値に変換可能な値を戻すファンクション・コールです。
character_literal
文字値または暗黙的に文字値に変換可能な値を表すリテラルです。
character_variable_name
文字値を格納する、事前に宣言された変数を識別します。
collection_name
現行の有効範囲のうち、これより前の部分で宣言されているコレクション(ネストした表、索引付き表またはVARRAY)を指定します。
cursor_name
現行の有効範囲の中で、事前に宣言されている明示カーソルを識別します。
cursor_variable_name
現行の有効範囲の中で事前に宣言されているPL/SQLカーソル変数を識別します。
date_constant_name
日付値を格納する、事前に宣言された定数を識別します。 この定数は、日付値、または暗黙的に日付値に変換可能な値に初期化される必要があります。
date_expression
日付/時刻値を戻す式です。
date_function_call
日付値、または暗黙的に日付値に変換可能な値を戻すファンクション・コールです。
date_literal
日付値、または暗黙的に日付値に変換可能な値を表すリテラルです。
date_variable_name
日付値を格納する、事前に宣言された変数を識別します。
EXISTS、COUNT、FIRST、LAST、LIMIT、NEXT、PRIOR
コレクション・メソッドです。 コレクションの名前にこれらを付加すると、有用な情報が戻されます。 たとえば、EXISTS(
n
)
は、コレクションにn
番目の要素が存在する場合にTRUE
を戻します。 それ以外の場合、EXISTS(
n
)
はFALSE
を戻します。 詳細は、「コレクション・メソッド・コール」を参照してください。
exponent
数値を戻す式です。
%FOUND、%ISOPEN、%NOTFOUND、%ROWCOUNT
カーソルの属性です。 カーソル名またはカーソル変数名にこれらの属性を追加すると、複数行の問合せの実行に関する有用な情報が戻されます。 これらの属性は暗黙カーソルSQL
にも追加できます。
host_cursor_variable_name
PL/SQLホスト環境で宣言され、バインド引数としてPL/SQLに渡されるカーソル変数を識別します。 ホスト・カーソル変数には、接頭辞としてコロンを付ける必要があります。
host_variable_name
PL/SQLホスト環境で宣言され、バインド引数としてPL/SQLに渡される変数を識別します。 ホスト変数のデータ型は、適切なPL/SQLのデータ型に暗黙的に変換できる必要があります。 また、ホスト変数には、接頭辞としてコロンを付ける必要があります。
IN
セット・メンバーシップをテストする比較演算子です。 集合のいずれかのメンバーと等しいかどうかがテストされます。 集合にはNULLが含まれていてもかまいませんが、NULLは無視されます。 さらに、次の形式の式の場合、
value NOT IN set
集合にNULLが含まれている場合は、FALSE
が戻されます。
index
戻される値がBINARY_INTEGER
型の値、PLS_INTEGER
型の値、またはその型に暗黙的に変換可能な値になる数値式です。
indicator_name
PL/SQLホスト環境で宣言され、PL/SQLに渡される標識変数を識別します。 標識変数には、接頭辞としてコロンを付ける必要があります。 標識変数は、関連付けられたホスト変数の値または条件を示します。 たとえば、Oracleプリコンパイラ環境では、標識変数を使用して出力ホスト変数内のNULLや切り捨てられた値を検出できます。
オペランドがNULLの場合はブール値TRUE
を戻し、オペランドがNULLでない場合はFALSE
を戻す比較演算子です。
文字値とパターンを比較する比較演算子です。 大/小文字が区別されます。 LIKE
は、文字のパターンが一致した場合はブール値TRUE
、一致しない場合はFALSE
を戻します。
NOT、AND、OR
表2-3の3値論理に従う論理演算子です。 AND
は、オペランドの両方がTRUEの場合にのみTRUE
を戻します。 OR
は、オペランドの片方がTRUEならばTRUE
を戻します。 NOT
はオペランドの反対の値(論理否定)を戻します。 詳細は、「論理演算子」を参照してください。
NULL
NULLを表すキーワードです。 存在しない値、不明な値または適用できない値を示します。 数値式または日付式の中でNULL
を使用すると、結果はNULLになります。
numeric_constant_name
数値を格納する、事前に宣言された定数を識別します。 この定数は、数値または暗黙的に数値に変換可能な値に初期化される必要があります。
numeric_expression
整数または実数を戻す式です。
numeric_function_call
数値または暗黙的に数値に変換可能な値を戻すファンクション・コールです。
numeric_literal
数値または暗黙的に数値に変換可能な値を表すリテラルです。
numeric_variable_name
数値を格納する、事前に宣言された変数を識別します。
pattern
LIKE
演算子によって、指定された文字列値と比較される文字列です。 patternには、ワイルドカードと呼ばれる特殊目的の文字を2種類使用できます。 アンダースコア(_)は1つの文字を表し、パーセント記号(%)は0(ゼロ)個以上の文字を表します。 パターンの後にESCAPE
'character_literal'
を使用することもできます。文字列の中で、パーセント記号またはアンダースコアの前にエスケープ文字があると、それらはワイルドカードとして認識されません。
relational_operator
式を比較する演算子です。 各演算子の意味は、「比較演算子」を参照してください。
SQL
SQLのDML文を処理するために、データベースによって暗黙的にオープンされるカーソルを識別します。 暗黙カーソルSQL
は常に、直前に実行されたSQL文を参照します。
+, -, /, *, **
加算、減算、除算、乗算、指数の演算子を示す記号です。
||
連結演算子です。 次の例に示すように、string1とstring2を連結した結果は、string1の後にstring2が続く文字列になります。
'Good' || ' morning!' = 'Good morning!'
次の例では、NULLは連結の結果に影響しないことを示します。
'suit' || NULL || 'case' = 'suitcase'
長さが0(ゼロ)の文字列(''
)はNULL文字列と呼ばれ、NULLと同じように扱われます。
case_operand
複数の代替結果値から1つ選択するために値が使用される式です。 case_operand
の値は、BLOB
、BFILE
、オブジェクト型、PL/SQLレコード、索引付き表、VARRAYまたはネストした表以外であれば、どのようなPL/SQLデータ型でもかまいません。
WHEN { case_operand_value | boolean_expression } THEN result_value
case_operand_value
またはboolean_expression
は順番に評価されます。 case_operand_value
がcase_operand
の値であるか、またはboolean_expression
の値がTRUE
である場合は、そのcase_operand_value
またはboolean_expression
に関連付けられているresult_value
が戻されます。 後続のcase_operand_value
またはboolean_expression
は評価されません。
case_operand_value
は、BLOB
、BFILE
、オブジェクト型、PL/SQLレコード、索引付き表、VARRAYまたはネストした表以外であれば、どのようなPL/SQLデータ型でもかまいません。
ELSE result_value
単純なCASE
式では、case_operand
と同じ値を持つcase_operand_value
が存在しない場合にのみ、result_value
が戻されます。
検索CASE
文では、TRUE
の値を持つboolean_expression
が存在しない場合にのみ、result_value
が戻されます。
ELSE
句を省略すると、case式ではNULL
が戻されます。
使用上の注意
ブール式では、互換性のあるデータ型を持つ値のみを比較できます。 詳細は、「PL/SQLのデータ型変換」を参照してください。
条件制御文においてブール式がTRUE
を戻すと、関連する一連の文が実行されます。 ただし、式がFALSE
またはNULL
を戻すと、関連する一連の文は実行されません。
関係演算子は、BOOLEAN
型のオペランドに適用できます。 定義によれば、TRUE
はFALSE
よりも大きい値を持ちます。 NULLの関係する比較は、常にNULLを戻します。 ブール式の値はブール変数にしか代入できず、ホスト変数やデータベースの列には代入できません。 また、BOOLEAN
型からの、またはBOOLEAN
型へのデータ型変換はできません。
次の例に示すように、加算演算子または減算演算子を使用すると、日付値を増減できます。
hire_date := '10-MAY-95'; hire_date := hire_date + 1; -- makes hire_date '11-MAY-95' hire_date := hire_date - 5; -- makes hire_date '06-MAY-95'
PL/SQLがブール式を評価する場合は、優先順位が最も高いのがNOT
演算子で、次がAND
演算子、最後がOR
演算子です。 ただし、カッコを使用すると、演算子のデフォルトの優先順位を変更できます。
式の中では、次の順序に従って(番号順に)演算が実行されます。
カッコ
指数
単項演算子
乗算および除算
加算、減算および連結
PL/SQLでは、優先順位の等しい演算子を評価する順序は特に決まっていません。 ある式の一部にカッコで囲まれた別の式が含まれている場合、PL/SQLでは、カッコで囲まれた式を先に評価し、その結果の値を外側の式で使用します。 カッコで囲まれた式がネストされている場合、PL/SQLでは、最も内側にある式を1番目に評価し、最も外側にある式を最後に評価します。
関連トピック