関数と条件値の構文

このマニュアル全体を通じて述べているとおり、Virtual DataPort には、集約関数、条件の中で使用される関数、派生属性を作成するための関数など、さまざまなタイプの関数があります。

以下 のリストは、これらの関数の構文を示しています。

関数の記述ルール
<field name> ::=
    <identifier>[.<identifier>]
  | <identifier>[.<identifier>]'['<integer>']' [ <compound field name> ]*
  | (<identifier>[.<identifier>])[<compound field name>]*


<compound field name> ::=
  .<identifier> | '['<integer>']'

<funcsymbol> ::= [\+\-\*\/\%]+

<value> ::=
    NULL
  | <field name>
  | <number>
  | <boolean>
  | <literal>
  | <function>
  | <value> <funcsymbol> <value>
  | ( <value> )
  | <rowvalue>
  | { <rowvalue> [, <rowvalue>]* }
  | CASE <value> WHEN <compare_value:value> THEN <result:value>
    [ WHEN <compare_value:value> THEN <result:value> ]*
    [ ELSE <result:value>] END
  | CASE WHEN <condition> THEN <result:value>
    [ WHEN <condition> THEN <result:value>]*
    [ ELSE <result:value> ] END

<condition> ::=
    <condition> AND <condition>
  | <condition> OR <condition>
  | NOT <condition>
  | ( <condition> )
  | <boolean>
  | <value> <unary operator>
  | <value> <binary operator> <value> [ , <value> ]*
  | <value> <binary operator> ( <value> [ , <value> ]* )
  | <value> BETWEEN <value> AND <value>
  | <value> IN ( <value> [ , <value> ]* )
  | <value> LIKE <value> [ ESCAPE <escape character:literal> ]
  | <value> NOT BETWEEN <value> AND <value>
  | <value> NOT IN ( <value> [ , <value> ]* )
  | <value> NOT LIKE <value> [ ESCAPE <escape character:literal> ]
  | <value> REGEXP_LIKE <value>
  | <value> REGEXP_ILIKE <value>
  | <value> XMLEXISTS ( <XQuery expression:text>, <value:xml> )
  | XMLExists ( <XQuery expression:text>,
    <ReadXQueryExpressionFromFile:boolean>, <value:xml>)
  | <value>

<rowvalue> ::=
  ROW( <value> [, <value>]* )

<function> ::=
  <identifier> ( [ [ <function modifier>] <function parameter>
  [, <function parameter>]* ] )

<function parameter> ::=
    *
  | <value>
  | '[' [ <value>, [ <value> ]* ] ']'

<function modifier> ::=
    ALL
  | DISTINCT

関数の構文を定義するため、以下のエレメントを使用します。

  • エレメント <field name> は、ビューまたは基本ビューの属性を指定するための構文を定義します。属性は複合型の場合がある点に注意してください (複合型の詳細については、「 複合値の管理 」を参照)。

  • <value> エレメントは、関数の任意のパラメーターの構文を定義します。属性の名前の場合もあれば、数値、ブール値、またはリテラル定数の場合もあります。 ROW コンストラクターを使用して複合値を作成することもできます (「 複合値を使用した条件 」を参照)。おわかりのとおり、関数のパラメーターを新しい関数にすることもできます。さらに、 <value> では、関数用に指定された表記法を挿入することができます (<value> <funcsymbol> <value> のルールを参照)。

関数エレメントは、識別子とそれに続く、かっこで囲まれ、カンマで区切られたパラメーターのリストとして定義されます。関数のパラメーターには、 * 、単一値 (<value> エレメント) または複数値 (角かっこで囲まれ、カンマで区切られた <value> エレメント) を指定できます。

前述の構文は、Virtual DataPort に存在するすべてのタイプの関数に共通です。ただし、特定の関数タイプには何らかの特異性が存在する場合があります。このような特異性が存在する場合は、このマニュアルの各関数タイプに対応するセクションで言及されています。

最後に、日付型定数と、ビューまたは基本リレーションをクエリしたときにデータ型がロケール特性を示すその他のフィールドを表すために使用される形式は、これらに用いられるロケール構成によって設定される点に留意することが重要です。さまざまなロケール構成パラメーターの詳細については「 ロケール構成の管理 」を、特定のロケール構成に割り当てられたパラメーターを調べる方法については「 カタログエレメントの記述 」を参照してください。