プライマリ・コンテンツに移動
Oracle® Fusion Middleware Oracle CQL言語リファレンス
12cリリース(12.2.1.2.0)
E82647-01
目次へ移動
目次

前
前へ
次
次へ

7 共通のOracle CQL DDL句

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

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

7.1 共通のOracle CQL DDL句の概要

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

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

7.2 array_type

目的

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

注意:

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

前提条件

なし。

構文

array_type::=

array type

セマンティクス

配列宣言

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

配列アクセス

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

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

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

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

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::=を参照してください。

配列アクセスの例

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

  • ビューv1は配列a1の3番目の要素にアクセスします。この配列には、Oracle CQLデータ・カートリッジ複合型com.mypackage.MyClassのインスタンスが含まれます。

  • 問合せq1は配列field1の最初の要素にアクセスします。この配列は、Oracle CQLデータ・カートリッジ複合型a1で定義されます。

<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>

7.3 attr

目的

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

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

前提条件

なし。

構文

図7-1 attr::=

attr

identifier::=および例7-1

element time

セマンティクス

identifier

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

次を指定できます

  • StreamOrViewName.ElementName

  • ElementName

  • CorrelationName.PseudoColumn

  • PseudoColumn

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

例7-1 pseudo_column

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

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

詳細については、「疑似列」を参照してください。

ストリームとそれに対応する有効な属性句を次に示します。

  • ItemTempStream.temp

  • temp

  • B.element_time

  • element_time

<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>

7.4 attrspec

目的

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

前提条件

なし。

構文

図7-2 attrspec::=

attr spec

(fixed_length_datatype::=およびvariable_length_datatype::=).

セマンティクス

identifier

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

fixed_length_datatype

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

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

variable_length_datatype

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

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

integer

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

7.5 complex_type

目的

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

  • メンバー・フィールド(静的またはインスタンス)

  • メンバー・メソッド(静的またはインスタンス)

  • コンストラクタ

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

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

前提条件

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

構文

complex_type::=

field name
complex type

(link::=)

セマンティクス

fieldname

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

フィールド・アクセス

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

qualified_type_nameを使用してアクセスできるのは、静的フィールドのみです。静的でないフィールドにアクセスするには、まず、複合型をインスタンス化しておく必要があります。

メソッド・アクセス

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

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

コンストラクタ呼出し

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

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

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

  • 問合せq1は、Oracle CQLデータ・カートリッジ複合型a1からフィールドmyFieldにアクセスします。

  • 問合せq2は、メソッドfunction-returning-objectから返されたOracle CQLデータ・カートリッジ複合型で定義されたフィールドmyFieldにアクセスします。

    問合せq3は、Oracle CQLデータ・カートリッジ複合型a1で定義されたOracle CQLデータ・カートリッジ複合型myFieldで定義されたフィールドmyNestedFieldにアクセスします。

  • 問合せq4は、パッケージcom.myPackageのクラスMyTypeで定義された静的フィールドmyStaticFieldにアクセスします。静的フィールドの場合、リンク(@myCartridge)が必要です。

<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

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

  • 問合せq1は、Oracle CQLデータ・カートリッジ複合型a1で定義されたメソッドmyMethodにアクセスします。この問合せは、空のパラメータ・リストでメソッドにアクセスします。

  • 問合せq2は、問合せq1とは別の署名を使用して、Oracle CQLデータ・カートリッジ複合型a1で定義されたメソッドmyMethodにアクセスします。このケースでは、問合せは3つの引数パラメータ・リストでメソッドにアクセスします。

  • 問合せq3は、Oracle CQLデータ・カートリッジ複合型MyTypeで定義されたメソッドmyStaticMethodにアクセスします。この問合せは、1つのパラメータでメソッドにアクセスします。静的メソッドの場合、リンク(@myCartridge)が必要です。

<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

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

  • 問合せq1は、パッケージjava.langで定義されたコンストラクタStringを呼び出します。このケースでは、問合せは空の引数リストでコンストラクタを呼び出します。

  • 問合せq2は、パッケージjava.langで定義されたコンストラクタStringを呼び出します。このケースでは、問合せは1つの引数パラメータ・リストでコンストラクタを呼び出し、返されたStringインスタンスで定義された静的でないメソッドsubstringを呼び出します。

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

7.6 const_bigint

目的

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

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

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

前提条件

なし。

構文

const_bigint::=

const bigint

7.7 const_int

目的

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

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

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

前提条件

なし。

構文

const_int::=

const int

7.8 const_string

目的

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

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

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

前提条件

なし。

構文

図7-3 const_string::=

const string

7.9 const_value

目的

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

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

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

前提条件

なし。

構文

図7-4 const_value::=

const value

例7-2

図7-5 interval_value

interval value

例7-2 interval_value

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

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

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

const_string

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

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

null

null定数値を指定します。

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

const_int

int定数値を指定します。

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

bigint

bigint定数値を指定します。

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

float

float定数値を指定します。

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

7.10 identifier

目的

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

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

前提条件

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

構文

図7-6 identifier::=

識別子

const_stringおよびExample 7-3

例7-3 unreserved_keyword::=

unreserved keyword

セマンティクス

const_string

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

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

[A-Z]

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

unreserved_keyword

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

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

reserved_keyword

次に示すものは予約済キーワードであるため、識別子の名前に使用できません: addaggregateallalterandapplicationasascavgbetweenbigintbindingbinjoinbinstreamjoinbooleanbybytecalloutcasecharclearcolumnsconstraintcontentcountcreatedaydaysdecodedefinederiveddescdestinationdisabledistinctdocumentdoubledropdstreamdumpdurationdurationelement_timeelseenableendevalnameeventeventsexceptexternalfalsefirstfloatfromfunctiongroupgroupaggrhavingheartbeathourhoursidentifiedimplementinincludeindexinstanceintintegerintersectintervalisistreamjavakeylanguagelastlevellikelineageloggingmatch_recognizematchesmaxmeasuresmetadata_querymetadata_systemmetadata_tablemetadata_userfuncmetadata_viewmetadata_windowmicrosecondmicrosecondsmillisecondmillisecondsminminusminuteminutesmonitoringmultiplesnanosecondnanosecondsnotnownullnullsobjectofonoperatorororderorderbytopoutputpartitionpartitionwinpartnwinpassingpathpatternpatternstrmpatternstrmbprevprimaryprojectpushqueryqueuerangerangewinrealregisterrelationrelsrcremovereturnreturningrowsrowwinrstreamrunrun_timesched_namesched_threadedschemasecondsecondsselectsemanticssetsilentsinkslidesourcespillstartstopstoragestorestreamstrmsrcsubsetsumsynopsissystemsystemstatethentimetime_slicetimeouttimertimestamptimestampedtotruetrustedtypeunboundedunionupdateusingvalueviewviewrelnsrcviewstrmsrcwellformedwhenwherewindowxmlaggxmlattributesxmlcolattvalxmlconcatxmldataxmlelementxmlexistsxmlforestxmlparsexmlqueryxmltablexmltype、またはxor

7.11 l-value

目的

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

前提条件

なし。

構文

l-value::=

I value

7.12 methodname

目的

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

前提条件

なし。

構文

methodname::=

method name

(link::=)

7.13 non_mt_arg_list

目的

1つ以上の引数をストリーム要素を使用する算術式として指定するには、non_mt_arg_list句を使用します。

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

前提条件

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

構文

non_mt_arg_list::=

non mt arg list

(arith_expr::=)

セマンティクス

arith_expr

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

7.14 non_mt_attr_list

目的

1つ以上の引数をストリーム要素として直接指定するには、non_mt_attr_list句を使用します。

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

前提条件

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

構文

図7-7 non_mt_attr_list::=

non mt attr list

セマンティクス

attr

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

7.15 non_mt_attrname_list

目的

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

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

前提条件

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

構文

図7-8 non_mt_attrname_list::=

non mt attr name list

セマンティクス

identifier

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

7.16 non_mt_attrspec_list

目的

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

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

前提条件

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

構文

non_mt_attrspec_list::=

non mt attr spec list

セマンティクス

attrspec

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

7.17 non_mt_cond_list

目的

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

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

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

前提条件

なし。

構文

non_mt_cond_list::=

non mt cond list

(condition::=between_condition::=)

セマンティクス

condition

比較条件を指定します。

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

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

between_condition

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

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

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

7.18 out_of_line_constraint

目的

このout_of_line_constraint句は、任意のデータ型のタプルを主キー整合性制約で制限するために使用します。

USE UPDATE SEMANTICSのリレーションに対する問合せを構成しようとしている場合は、1つ以上のストリーム要素を主キーとして宣言する必要があります。この制約は、1つ以上のストリーム要素の値で構成される複合主キーを指定するために使用します。

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

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

前提条件

out_of_line_constraintで指定したタプルには、null値を含めることができません。

構文

out_of_line_constraint::=

out of line constraint

セマンティクス

non_mt_attrname_list

主キー整合性制約で制限する1つ以上のタプルを指定します。

7.19 param_list

目的

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

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

前提条件

なし。

構文

param_list::=

param list

(arith_expr::=)

7.20 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::=

qualified type name

(arith_expr::=およびlink::=)

識別子
識別子

セマンティクス

package_name

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

class_name

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

7.21 query_ref

目的

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

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

前提条件

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

構文

図7-9 query_ref::=

query ref

セマンティクス

identifier

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

7.22 time_spec

目的

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

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

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

前提条件

なし。

構文

図7-10 time_spec::=

time spec

図7-11 time_unit::=

time unit

セマンティクス

integer

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

time_unit

時間単位を指定します。

7.23 xml_attribute_list

目的

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

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

前提条件

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

構文

xml_attribute_list::=

xml attribute list

セマンティクス

xml_attr_list

1つ以上のXML属性を指定します。

<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>

7.24 xml_attr_list

目的

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

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

前提条件

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

構文

xml_attr_list::=

xml attr list
arith expr

( arith_expr::=)

セマンティクス

xml_attr

XML属性を指定します。

7.25 xqryargs_list

目的

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

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

前提条件

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

構文

xqryargs_list::=

xqry args list
arith expr

( arith_expr::=)

セマンティクス

xqryarg

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

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