ヘッダーをスキップ
Oracle Database PL/SQL言語リファレンス
11g リリース1(11.1)
E05670-03
  目次
目次
索引
索引

戻る
戻る
 
次へ
次へ
 

式は、オペランド(変数、定数、リテラル、演算子、ファンクション・コールおよびプレースホルダ)の任意の組合せです。 最も単純な式は、1個の変数で構成されています。

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

構文

expression ::=

expression
expression.gifの説明

boolean_expression ::=

boolean_expression
boolean_expression.gifの説明

other_boolean_form ::=

other_boolean_form
other_boolean_form.gifの説明

character_expression ::=

character_expression
character_expression.gifの説明

numeric_subexpression ::=

numeric_subexpression
numeric_subexpression.gifの説明

date_expression ::=

date_expression
date_expression.gifの説明

numeric_expression ::=

numeric_expression
numeric_expression.gifの説明

simple_case_statement ::=

simple_case_expression
simple_case_expression.gifの説明

searched_case_expression ::=

searched_case_expression
searched_case_expression.gifの説明

boolean_expression ::=

キーワードとパラメータの説明

BETWEEN

この比較演算子は、ある値が指定範囲の中にあるかどうかをテストします。 つまり、下限以上、上限以下にあるかどうかがテストされます。

boolean_constant_name

BOOLEAN型の定数を指定します。このような定数は、TRUEFALSE、またはNULLに初期化される必要があります。 ブール定数に対する算術演算は許可されていません。

boolean_expression

値がブール値(TRUEFALSEまたはNULL)の式です。

boolean_function_call

ブール値を戻すファンクションへのコールです。

boolean_literal

事前定義の値TRUEFALSE、またはNULL(存在しない値、不明な値または適用できない値を表す)です。 データベース列に値TRUEFALSEを挿入できません。

boolean_variable_name

BOOLEAN型の変数を識別します。 BOOLEAN変数に代入できるのは、値TRUEFALSEおよび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や切り捨てられた値を検出できます。

IS NULL

オペランドがNULLの場合はブール値TRUEを戻し、オペランドがNULLでない場合はFALSEを戻す比較演算子です。

LIKE

文字値とパターンを比較する比較演算子です。 大/小文字が区別されます。 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文を参照します。

+, -, /, *, **

加算、減算、除算、乗算、指数の演算子を示す記号です。

||

連結演算子です。 次の例に示すように、string1string2を連結した結果は、string1の後にstring2が続く文字列になります。

'Good' || ' morning!' = 'Good morning!'

次の例では、NULLは連結の結果に影響しないことを示します。

'suit' || NULL || 'case' = 'suitcase'

長さが0(ゼロ)の文字列('')はNULL文字列と呼ばれ、NULLと同じように扱われます。

case_operand

複数の代替結果値から1つ選択するために値が使用される式です。 case_operandの値は、BLOBBFILE、オブジェクト型、PL/SQLレコード、索引付き表、VARRAYまたはネストした表以外であれば、どのようなPL/SQLデータ型でもかまいません。

WHEN { case_operand_value | boolean_expression } THEN result_value

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

case_operand_valueは、BLOBBFILE、オブジェクト型、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型のオペランドに適用できます。 定義によれば、TRUEFALSEよりも大きい値を持ちます。 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演算子です。 ただし、カッコを使用すると、演算子のデフォルトの優先順位を変更できます。

式の中では、次の順序に従って(番号順に)演算が実行されます。

  1. カッコ

  2. 指数

  3. 単項演算子

  4. 乗算および除算

  5. 加算、減算および連結

PL/SQLでは、優先順位の等しい演算子を評価する順序は特に決まっていません。 ある式の一部にカッコで囲まれた別の式が含まれている場合、PL/SQLでは、カッコで囲まれた式を先に評価し、その結果の値を外側の式で使用します。 カッコで囲まれた式がネストされている場合、PL/SQLでは、最も内側にある式を1番目に評価し、最も外側にある式を最後に評価します。

関連トピック