ヘッダーをスキップ
Oracle® Fusion Middleware Oracle Event Processing CQL言語リファレンス
11gリリース1 (11.1.1.7)
B61613-06
  目次へ移動
目次

前
 
次
 

7 共通のOracle CQL DDL句

この章では、Oracle Continuous Query Language (Oracle CQL)のデータ定義言語(DDL)に含まれる句のリファレンスを提供します。

この章の内容は次のとおりです。

7.1 共通のOracle CQL DDL句の概要

Oracle CQLでは次の共通のDDL句をサポートしています。

Oracle CQL文の詳細は、第22章「Oracle CQL文」を参照してください。


array_type

目的

すべて同じ型の一連のcomplex_typeコンポーネントで構成されるOracle CQLデータ・カートリッジの型を指定するには、array_type句を使用します。


注意:

Oracle CQLでは1次元配列のみをサポートしています。このため、java.lang.String[]は使用できますが、java.lang.String[][]は使用できません。


要件

なし。

構文

array_type::=

array.pngについては周囲のテキストで説明しています。

(l-value::=qualified_type_name::=)

セマンティクス

配列宣言

配列型はOracle CQLデータ・カートリッジcomplex_typequalified_type_nameを使用して宣言します。complextypeの配列のみがサポートされます。Oracle CQL Javaデータ・カートリッジに同等の型が定義されていなければ、Oracle CQL単純型の配列を宣言することはできません。

例については、次の項を参照してください。

配列アクセス

complex_type配列要素には、整数索引でアクセスします。索引は、データ・カートリッジ実装によって0または1で始まります。

配列へのアクセス時に、Oracle CQLで新しい配列型のインスタンスを直接インスタンス化することはサポートされていません。たとえば、次の文は使用できません

SELECT java.lang.String[10] ...

例については、「配列アクセスの例」を参照してください。

次の例では、この文でサポートされる様々なセマンティクスを示します。

配列宣言の例: complex_type

例7-1に、イベント・タイプを、イベント・プロパティをパッケージcom.mypackageで定義されたOracle CQLデータ・カートリッジ複合型MyClassの配列として指定するJavaクラスとして作成する方法を示します。

例7-1 Oracle CQLデータ・カートリッジ配列をイベント・タイプで宣言

package com.myapplication.event;

import java.util.Date;

public final class MarketEvent {
    private final String symbol;
    private final Double price;
    private final com.mypackage.MyClass[] a1;

    public MarketEvent(...) {
        ...
        }
    ...
}

配列宣言の例: Oracle CQL単純型

Oracle CQLデータ・カートリッジの型の配列のみがサポートされています。Oracle CQL単純型の配列は宣言できません

int[] a1

ただし、Oracle CQL Javaデータ・カートリッジを使用し、単純型に相当するJavaの型(存在する場合)を参照することで、この問題を解決できます。

int@java[] a1

@構文の詳細は、link::=を参照してください。

配列アクセスの例

例7-2に、Oracle CQLデータ・カートリッジ複合型の配列アクセスを使用する、次の問合せを登録する方法を示します。

例7-2 Oracle CQL問合せでのOracle CQLデータ・カートリッジ配列へのアクセス

<view id="v1" schema="symbol price a1"><![CDATA[ 
    IStream(select symbol, price, a1[3] from S1[range 10 slide 10]) 
]]></view>
<query id="q1"><![CDATA[ 
    SELECT a1.field1[1] …
]]></query>

attr

目的

ストリーム要素または疑似列を指定するには、attr句を使用します。

attr句は次のOracle CQL文で使用できます。

要件

なし。

構文

attr::=

attr.pngについては周囲のテキストで説明しています。

(identifier::=pseudo_column::=)

pseudo_column::=

pseudo_column.pngについては周囲のテキストで説明しています。

セマンティクス

identifier

ストリーム要素の識別子を指定します。

指定できるものは、次のとおりです。

例については、「例」を参照してください。

構文については、identifier::=(親: attr::=)を参照してください。

pseudo_column

特定のストリーム要素、すべてのストリーム要素、またはMATCH_RECOGNIZE句の相関名に関連するストリーム要素に関連付けられているタイムスタンプを指定します。

例については、次の項を参照してください。

詳細は、第3章「疑似列」を参照してください。

構文については、pseudo_column::=(親: attr::=)を参照してください。

例7-3に示すストリームがある場合、有効な属性の句は次のとおりです。

例7-3 attr句

<view id="ItemTempStream" schema="itemId temp"><![CDATA[ 
    IStream(select * from ItemTemp) 
]]></view>
<query id="detectPerish"><![CDATA[ 
  select its.itemId
  from ItemTempStream MATCH_RECOGNIZE (
      PARTITION BY itemId
      MEASURES A.itemId as itemId
      PATTERN (A B* C)
      DEFINE
          A  AS  (A.temp >= 25),
          B  AS  ((B.temp >= 25) and (to_timestamp(B.element_time) - to_timestamp(A.element_time) < INTERVAL "0 00:00:05.00" DAY TO SECOND)),
          C  AS  (to_timestamp(C.element_time) - to_timestamp(A.element_time) >= INTERVAL "0 00:00:05.00" DAY TO SECOND)
  ) as its
]]></query>

attrspec

目的

ストリーム要素の識別子とデータ型を定義するには、attrspec句を使用します。

attrspec句は次のOracle CQL文で使用できます。

要件

なし。

構文

attrspec::=

attrspec.pngについては周囲のテキストで説明しています。

(identifier::=fixed_length_datatype::=variable_length_datatype::=)

セマンティクス

identifier

ストリーム要素の識別子を指定します。

構文については、identifier::=(親: attrspec::=)を参照してください。

fixed_length_datatype

ストリーム要素のデータ型を固定長のデータ型として指定します。

構文については、fixed_length_datatype::=(親: attrspec::=)を参照してください。

variable_length_datatype

ストリーム要素のデータ型を可変長のデータ型として指定します。

構文については、variable_length_datatype::=(親: attrspec::=)を参照してください。

integer

可変長データ型の長さを指定します。

構文については、attrspec::=を参照してください。


complex_type

目的

次の項目を定義するOracle CQLデータ・カートリッジの型を指定するには、complex_type句を使用します。

フィールドの型、およびメソッドの戻り値の型およびパラメータ・リストは、複合型または単純型です。

複合型は修飾型名(ピリオド「.」で区切られた一連の識別子)と所属するデータ・カートリッジのオプション名(link::=を参照)で識別されます。リンク名が指定されていない場合、Oracle Event Processingでは複合型がJavaクラスであると見なします(複合型がJavaデータ・カートリッジに所属すると見なします)。

要件

complextypeを提供するOracle CQLデータ・カートリッジが、実行時にOracle Event Processingサーバーによってロードされている必要があります。

構文

complex_type::=

complextype.pngについては周囲のテキストで説明しています。

(attr::=fieldname::=methodname::=param_list::=qualified_type_name::=)

fieldname::=

fieldname.pngについては周囲のテキストで説明しています。

(identifier::=link::=)

セマンティクス

fieldname

fieldname句を使用して、Oracle CQLデータ・カートリッジ複合型の静的フィールドを指定します。

構文: fieldname::=(親: complex_type::=)。

フィールド・アクセス

ORDER BY句内の式で生成された複合型l-valueは使用できません。現在、SELECT句およびWHERE句内の式のみ、複合型l-valueを生成できます。

qualified_type_nameを使用してアクセスできるのは、静的フィールドのみです。静的でないフィールドにアクセスするには、まず複合型をインスタンス化する必要があります(「コンストラクタ呼出し」を参照)。

例については、「フィールド・アクセスの例: complex_typeを参照してください。

メソッド・アクセス

複合型のセッター・メソッドにアクセスすると、他の問題が発生する可能性があります。他の問題が発生すると、同時実行性と共有の機会が低下します。たとえば、セッター・メソッドを呼び出して、ビューに依存する他の問合せと共有しているビュー属性(イベント・プロパティなど)の値を変更すると、メソッド呼出しによって発生した他の問題により、問合せの結果が変わる可能性があります。

qualified_type_nameを使用してアクセスできるのは、静的メソッドのみです。静的でないフィールドにアクセスするには、まず複合型をインスタンス化する必要があります(「コンストラクタ呼出し」を参照)。

例については、「メソッド・アクセスの例: complex_typeを参照してください。

コンストラクタ呼出し

qualified_type_nameを使用してアクセスできるのは、静的フィールドおよび静的メソッドのみです。静的でないフィールドまたは静的でないメソッドにアクセスするには、まずいずれかのコンストラクタを呼び出して、複合型をインスタンス化する必要があります。

例については、「コンストラクタ呼出しの例: complex_typeを参照してください。

次の例では、この文でサポートされる様々なセマンティクスを示します。

フィールド・アクセスの例: complex_type

例7-4に、Oracle CQLデータ・カートリッジ複合型のフィールド・アクセスを使用する、次の問合せを登録する方法を示します。

例7-4 データ・カートリッジのフィールド・アクセス

<query id="q1"><![CDATA[ 
    SELECT a1.myField …
]]></query>
<query id="q2"><![CDATA[ 
    SELECT function-returning-object().myField …
]]></query>
<query id="q3"><![CDATA[ 
    SELECT a1.myField.myNestedField …
]]></query>
<query id="q4"><![CDATA[ 
    SELECT com.myPackage.MyType.myStaticField@myCartridge …
]]></query>

メソッド・アクセスの例: complex_type

例7-5に、Oracle CQLデータ・カートリッジ複合型のメソッド・アクセスを使用する、次の問合せを登録する方法を示します。

例7-5 データ・カートリッジのメソッド・アクセス

<query id="q1"><![CDATA[ 
    SELECT a1.myMethod() … 
]]></query>
<query id="q2"><![CDATA[ 
    SELECT a1.myMethod(a2, “foo”, 10) …
]]></query>
<query id="q3"><![CDATA[ 
    SELECT myPackage.MyType.myStaticMethod@myCartridge("foo") …
]]></query>

コンストラクタ呼出しの例: complex_type

例7-6に、Oracle CQLデータ・カートリッジ複合型のコンストラクタ呼出しを使用する、次の問合せを登録する方法を示します。

例7-6 データ・カートリッジのコンストラクタ呼出し

<query id="q1"><![CDATA[ 
    SELECT java.lang.String() …
]]></query>
<query id="q2"><![CDATA[ 
    SELECT java.lang.String(“food”).substring(0,1) …
]]></query>

const_bigint

目的

big integerの数値リテラルを指定するには、const_bigint句を使用します。

const_bigint句は次のOracle CQL文で使用できます。

詳細は、2.3.2項「数値リテラル」を参照してください。

要件

なし。

構文

const_bigint::=

const_bigint.pngについては周囲のテキストで説明しています。

const_int

目的

整数の数値リテラルを指定するには、const_int句を使用します。

const_int句は次のOracle CQL文で使用できます。

詳細は、2.3.2項「数値リテラル」を参照してください。

要件

なし。

構文

const_int::=

const_int.pngについては周囲のテキストで説明しています。

const_string

目的

定数のStringテキスト・リテラルを指定するには、const_string句を使用します。

const_string句は次のOracle CQL文で使用できます。

詳細は、2.3.1項「テキスト・リテラル」を参照してください。

要件

なし。

構文

const_string::=

const_string.pngについては周囲のテキストで説明しています。

const_value

目的

リテラル値を指定するには、const_value句を使用します。

const_value句は次のOracle CQL文で使用できます。

詳細は、2.3項「リテラル」を参照してください。

要件

なし。

構文

const_value::=

const_value.pngについては周囲のテキストで説明しています。

(interval_value::=const_string::=const_int::=const_bigint::=)

interval_value::=

interval_value.pngについては周囲のテキストで説明しています。

(const_string::=)

セマンティクス

interval_value

期間の定数値を引用符付きの文字列として指定します。例:

INTERVAL '4 5:12:10.222' DAY TO SECOND(3)

詳細は、2.3.4項「期間リテラル」を参照してください。

構文については、interval_value::=(親: const_value::=)を参照してください。

const_string

引用符付きのString定数値を指定します。

詳細は、2.3.1項「テキスト・リテラル」を参照してください。

構文については、const_string::=(親: interval_value::=およびconst_value::=)を参照してください。

null

null定数値を指定します。

詳細は、2.5項「Null」を参照してください。

const_int

int定数値を指定します。

詳細は、2.3.2項「数値リテラル」を参照してください。

bigint

bigint定数値を指定します。

詳細は、2.3.2項「数値リテラル」を参照してください。

float

float定数値を指定します。

詳細は、2.3.2項「数値リテラル」を参照してください。


identifier

目的

既存のOracle CQLスキーマ オブジェクトを参照するには、identifier句を使用します。

identifier句は次のOracle CQL文で使用できます。

要件

スキーマ・オブジェクトが存在している必要があります。

構文

identifier::=

identifier.pngについては周囲のテキストで説明しています。

(const_string::=unreserved_keyword::=)

unreserved_keyword::=

unreserved_keyword.pngについては周囲のテキストで説明しています。

セマンティクス

const_string

識別子をStringとして指定します。

詳細は、2.8.1項「スキーマ・オブジェクトのネーミング・ルール」を参照してください。

構文については、identifier::=を参照してください。

[A-Z]

識別子を単一の大文字として指定します。

構文については、identifier::=を参照してください。

unreserved_keyword

識別子として使用できる名前です。

詳細は、次を参照してください。

構文については、unreserved_keyword::=(親: identifier::=)を参照してください。

reserved_keyword

次の名前は予約キーワードであるため、識別子として使用できません。addaggregateallalterandapplicationasascavgbetweenbigintbindingbinjoinbinstreamjoinbooleanbybytecalloutcasecharclearcolumnsconstraintcontentcountcreatedaydaysdecodedefinederiveddescdestinationdisabledistinctdocumentdoubledropdstreamdumpdurationdurationelement_timeelseenableendevalnameeventeventsexceptexternalfalsefirstfloatfromfunctiongroupgroupaggrhavingheartbeathourhoursidentifiedimplementinincludeindexinstanceintintegerintersectintervalisistreamjavakeylanguagelastlevellikelineageloggingmatch_recognizematchesmaxmeasuresmetadata_querymetadata_systemmetadata_tablemetadata_userfuncmetadata_viewmetadata_windowmicrosecondmicrosecondsmillisecondmillisecondsminminusminuteminutesmonitoringmultiplesnanosecondnanosecondsnotnownullnullsobjectofonoperatorororderorderbytopoutputpartitionpartitionwinpartnwinpassingpathpatternpatternstrmpatternstrmbprevprimaryprojectpushqueryqueuerangerangewinrealregisterrelationrelsrcremovereturnreturningrowsrowwinrstreamrunrun_timesched_namesched_threadedschemasecondsecondsselectsemanticssetsilentsinkslidesourcespillstartstopstoragestorestreamstrmsrcsubsetsumsynopsissystemsystemstatethentimetime_slicetimeouttimertimestamptimestampedtotruetrustedtypeunboundedunionupdateusingvalueviewviewrelnsrcviewstrmsrcwellformedwhenwherewindowxmlaggxmlattributesxmlcolattvalxmlconcatxmldataxmlelementxmlexistsxmlforestxmlparsexmlqueryxmltablexmltypeまたはxor


l-value

目的

整数リテラルを指定するには、l-value句を使用します。

l-value句は次のOracle CQL文で使用できます。

要件

なし。

構文

l-value::=

l_value.pngについては周囲のテキストで説明しています。

(integer::=)


methodname

目的

Oracle CQLデータ・カートリッジ複合型のメソッドを指定するには、methodname句を使用します。

methodname句は次のOracle CQL文で使用できます。

要件

なし。

構文

methodname::=

methodname.pngについては周囲のテキストで説明しています。

(identifier::=link::=)


non_mt_arg_list

目的

1つ以上の引数をストリーム要素を使用する算術式として指定するには、non_mt_arg_list句を使用します。1つ以上の引数をストリーム要素として直接指定するには、non_mt_attr_list::=を参照してください。

non_mt_arg_list句は次のOracle CQL文で使用できます。

要件

参照しているストリーム要素がある場合は、ストリームが存在している必要があります。

構文

non_mt_arg_list::=

non_mt_arg_list.pngについては周囲のテキストで説明しています。

(arith_expr::=)

セマンティクス

arith_expr

引数値に解決される算術式を指定します。


non_mt_attr_list

目的

1つ以上の引数をストリーム要素として直接指定するには、non_mt_attr_list句を使用します。1つ以上の引数を、ストリーム要素を使用する算術式として指定するには、non_mt_arg_list::=を参照してください。

non_mt_attr_list句は次のOracle CQL文で使用できます。

要件

参照しているストリーム要素がある場合は、ストリームが存在している必要があります。

構文

non_mt_attr_list::=

non_mt_attr_list.pngについては周囲のテキストで説明しています。

(attr::=)

セマンティクス

attr

引数をストリーム要素として直接指定します。


non_mt_attrname_list

目的

1つ以上のストリーム要素を名前で指定するには、non_mt_attrname_list句を使用します。

non_mt_attrname_list句は次のOracle CQL文で使用できます。

要件

参照しているストリーム要素がある場合は、ストリームが存在している必要があります。

構文

non_mt_attrname_list::=

non_mt_attrname_list.pngについては周囲のテキストで説明しています。

(identifier::=)

セマンティクス

identifier

ストリーム要素を名前で指定します。


non_mt_attrspec_list

目的

ストリーム要素の識別子とデータ型を定義する1つ以上の属性仕様を指定するには、non_mt_attrspec_list句を使用します。

non_mt_attrspec_list句は次のOracle CQL文で使用できます。

要件

参照しているストリーム要素がある場合は、ストリームが存在している必要があります。

構文

non_mt_attrspec_list::=

non_mt_attrspec_list.pngについては周囲のテキストで説明しています。

(attrspec::=)

セマンティクス

attrspec

属性の識別子とデータ型を指定します。


non_mt_cond_list

目的

ANDORXORおよびNOTの論理演算子の任意の組合せを使用して1つ以上の条件を指定するには、non_mt_cond_list句を使用します。

non_mt_cond_list句は次のOracle CQL文で使用できます。

詳細は、第6章「条件」を参照してください。

要件

なし。

構文

non_mt_cond_list::=

non_mt_cond_list.pngについては周囲のテキストで説明しています。

(non_mt_cond_list::=condition::=between_condition::=)

セマンティクス

condition

比較条件を指定します。

詳細は、6.2項「比較条件」を参照してください。

構文については、condition::=(親: non_mt_cond_list::=)を参照してください。

between_condition

範囲に含まれているかをテストする条件を指定します。

詳細は、6.5項「範囲条件」を参照してください。

構文については、between_condition::=(親: non_mt_cond_list::=)を参照してください。


param_list

目的

関数パラメータ・リストに類似した、Oracle CQLデータ・カートリッジ複合型のメソッドまたはコンストラクタのゼロ個以上のパラメータのカンマ区切りリストを指定するには、param_list句を使用します。

param_list句は次のOracle CQL文で使用できます。

要件

なし。

構文

param_list::=

param_list.pngについては周囲のテキストで説明しています。

(arith_expr::=)


qualified_type_name

目的

java.lang.Stringなど、Oracle CQLデータ・カートリッジ複合型の完全指定型名を指定するには、qualified_type_name句を使用します。Oracle CQLデータ・カートリッジの静的フィールド、静的メソッドまたはコンストラクタを呼び出す場合は、qualified_type_nameを使用します。

デフォルト・パッケージはありません。たとえば、クラスStringを参照する場合は、Javaデータ・カートリッジを使用してjava.langを指定する必要があります。予約語と修飾型を区別するには、すべての修飾型に少なくとも2つの識別子が必要であり、修飾名に少なくとも1つのピリオド(.)を使用する必要があります。

qualified_type_name句は次のOracle CQLデータ・カートリッジ文で使用できます。

要件

なし。

構文

qualified_type_name::=

qualified_type_name.pngについては周囲のテキストで説明しています。

(arith_expr::=package_name::=class_name::=link::=)

package_name::=

package_name.pngについては周囲のテキストで説明しています。

(identifier::=)

class_name::=

package_name.pngについては周囲のテキストで説明しています。

(arith_expr::=)

セマンティクス

package_name

package_name句を使用して、Oracle CQLデータ・カートリッジ・パッケージ名を指定します。

構文: package_name::=(親: qualified_type_name::=)

class_name

class_name句を使用して、Oracle CQLデータ・カートリッジClassの名前を指定します。

構文: class_name::=(親: qualified_type_name::=)


query_ref

目的

既存のOracle CQL問合せを名前で参照するには、query_ref句を使用します。

次のOracle CQL文でOracle CQL問合せを参照できます。

要件

問合せが存在している必要があります (「Query」を参照)。

構文

query_ref::=

query_ref.pngについては周囲のテキストで説明しています。

(identifier::=)

セマンティクス

identifier

問合せの名前を指定します。これは、以降のOracle CQL文で問合せを参照するのに使用する名前です。


time_spec

目的

日数、時間数、分数、秒数、ミリ秒数またはナノ秒数で期間を定義するにはtime_spec句を使用します。

デフォルト: 単位を指定しない場合、Oracle Event Processingでは[second|seconds]が想定されます。

time_spec句は次のOracle CQL文で使用できます。

要件

なし。

構文

time_spec::=

time_spec.pngについては周囲のテキストで説明しています。

(time_unit::=)

time_unit::=

time_unit.pngについては周囲のテキストで説明しています。

セマンティクス

integer

時間単位の数を指定します。

time_unit

時間単位を指定します。


xml_attribute_list

目的

1つ以上のXML属性を指定するには、xml_attribute_list句を使用します。

xml_attribute_list句は次のOracle CQL文で使用できます。

要件

参照しているストリーム要素がある場合は、ストリームが存在している必要があります。

構文

xml_attribute_list::=

xml_attribute_list.pngについては周囲のテキストで説明しています。

(xml_attr_list::=)

セマンティクス

xml_attr_list

1つ以上のXML属性を指定します(例7-7を参照)。

例7-7 xml_attr_list

<query id="tkdata51_q1"><![CDATA[ 
    select XMLELEMENT(NAME "S0", XMLATTRIBUTES(tkdata51_S0.c1 as "C1", tkdata51_S0.c2 as "C2"), 
        XMLELEMENT(NAME "c1_plus_c2", c1+c2), XMLELEMENT(NAME "c2_plus_10", c2+10.0)) from tkdata51_S0 [range 1]
]]>
</query>

構文については、xml_attr_list::=(親: xml_attribute_list::=)を参照してください。


xml_attr_list

目的

1つ以上のXML属性を指定するには、xml_attr_list句を使用します。

xml_attr_list句は次のOracle CQL文で使用できます。

要件

参照しているストリーム要素がある場合は、ストリームが存在している必要があります。

構文

xml_attr_list::=

xml_attr_list.pngについては周囲のテキストで説明しています。

(xml_attr::=)

xml_attr::=

xml_attr.pngについては周囲のテキストで説明しています。

(const_string::=arith_expr::=attr::=)

セマンティクス

xml_attr

XML属性を指定します。

構文については、xml_attr::=(親: xml_attr_list::=)を参照してください。


xqryargs_list

目的

XML問合せに1つ以上の引数を指定するには、xqryargs_list句を使用します。

non_mt_arg_list句は次のOracle CQL文で使用できます。

要件

参照しているストリーム要素がある場合は、ストリームが存在している必要があります。

構文

xqryargs_list::=

xqryargs_list.pngについては周囲のテキストで説明しています。

(xqryarg::=)

xqryarg::=

xqryarg.pngについては周囲のテキストで説明しています。

(const_string::=arith_expr::=)

セマンティクス

xqryarg

ストリーム要素の値をXQuery変数またはXPath演算子にバインドする句。

1つ以上のストリーム要素を使用する任意の算術式を(arith_expr::=を参照)、指定されたXQueryの変数またはXPath演算子("."など)に引用符付きの文字列としてバインドできます。

構文については、xqryarg::=(親: xqryargs_list::=)を参照してください。