この章では、複数の Oracle CQL 文で使用する Oracle CQL データ定義言語 (DDL) の句について説明します。
Oracle CQL では以下の共通の DDL 句をサポートしています。
Oracle CQL 文については、第 16 章「Oracle CQL 文」を参照してください。
目的
ストリーム要素または擬似列を指定するには、attr
句を使用します。
attr
句は以下の Oracle CQL 文で使用できます。
要件
なし。
構文
(identifier::=、pseudo_column::=)
セマンティクス
identifier
ストリーム要素の識別子を指定します。
以下を指定できます。
StreamOrViewName
.
ElementName
ElementName
CorrelationName
.
PseudoColumn
PseudoColumn
例については、「例」を参照してください。
構文については、identifier::= (親 : attr::=) を参照してください。
pseudo_column
特定のストリーム要素、すべてのストリーム要素、または MATCH_RECOGNIZE
句の相関名に関連するストリーム要素に関連付けられているタイムスタンプを指定します。
例については、「例」を参照してください。
詳細については、第 3 章「擬似列」を参照してください。
構文については、pseudo_column::= (親 : attr::=) を参照してください。
例
例 13-1 に示すストリームがある場合、有効な属性の句は以下のとおりです。
ItemTempStream
.temp
temp
B.element_time
element_time
例 13-1 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
句は以下の Oracle CQL 文で使用できます。
要件
なし。
構文
(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::= を参照してください。
目的
big integer の数値リテラルを指定するには、const_bigint
句を使用します。
const_bigint
句は以下の Oracle CQL 文で使用できます。
詳細については、節 2.4.2「数値リテラル」を参照してください。
要件
なし。
構文
目的
整数の数値リテラルを指定するには、const_int
句を使用します。
const_int
句は以下の Oracle CQL 文で使用できます。
詳細については、節 2.4.2「数値リテラル」を参照してください。
要件
なし。
構文
目的
定数の String
テキスト リテラルを指定するには、const_string
句を使用します。
const_string
句は以下の Oracle CQL 文で使用できます。
詳細については、節 2.4.1「テキスト リテラル」を参照してください。
要件
なし。
構文
目的
const_int::= リテラル値を指定するには、const_value
句を使用します。
const_value
句は以下の Oracle CQL 文で使用できます。
詳細については、節 2.4「リテラル」を参照してください。
要件
なし。
構文
(interval_value::=、const_string::=、const_int::=、const_bigint::=)
セマンティクス
interval_value
期間の定数値を引用符付きの文字列として指定します。例を示します。
INTERVAL '4 5:12:10.222' DAY TO SECOND(3)
詳細については、節 2.4.4「期間リテラル」を参照してください。
構文については、interval_value::= (親 : const_value::=) を参照してください。
const_string
引用符付きの String
定数値を指定します。
詳細については、節 2.4.1「テキスト リテラル」を参照してください。
構文については、const_string::= (親 : interval_value::= および const_value::=) を参照してください。
null
null 定数値を指定します。
詳細については、節 2.6「Null」を参照してください。
const_int
int
定数値を指定します。
詳細については、節 2.4.2「数値リテラル」を参照してください。
bigint
bigint
定数値を指定します。
詳細については、節 2.4.2「数値リテラル」を参照してください。
float
float 定数値を指定します。
詳細については、節 2.4.2「数値リテラル」を参照してください。
目的
既存の Oracle CQL スキーマ オブジェクトを参照するには、identifier
句を使用します。
以下の Oracle CQL 文で Oracle CQL クエリを参照できます。
要件
スキーマ オブジェクトが存在している必要があります。
構文
(const_string::=、unreserved_keyword::=)
セマンティクス
const_string
識別子を String として指定します。
詳細については、節 2.9.1「スキーマ オブジェクトの命名規則」を参照してください。
構文については、identifier::= を参照してください。
[A-Z]
識別子を単一の大文字として指定します。
構文については、identifier::= を参照してください。
unreserved_keyword
詳細については、以下を参照してください。
構文については、unreserved_keyword::= (親 : identifier::=) を参照してください。
reserved_keyword
以下の名前は予約キーワードであるため、識別子として使用できません。add
、aggregate
、all
、alter
、and
、application
、as
、asc
、avg
、between
、bigint
、binding
、binjoin
、binstreamjoin
、boolean
、by
、byte
、callout
、case
、char
、clear
、columns
、constraint
、content
、count
、create
、day
、days
、decode
、define
、derived
、desc
、destination
、disable
、distinct
、document
、double
、drop
、dstream
、dump
、duration
、duration
、element_time
、else
、enable
、end
、evalname
、event
、events
、except
、external
、false
、first
、float
、from
、function
、group
、groupaggr
、having
、heartbeat
、hour
、hours
、identified
、implement
、in
、include
、index
、instance
、int
、integer
、intersect
、interval
、is
、istream
、java
、key
、language
、last
、level
、like
、lineage
、logging
、match_recognize
、matches
、max
、measures
、metadata_query
、metadata_system
、metadata_table
、metadata_userfunc
、metadata_view
、metadata_window
、microsecond
、microseconds
、millisecond
、milliseconds
、min
、minus
、minute
、minutes
、monitoring
、multiples
、nanosecond
、nanoseconds
、not
、now
、null
、nulls
、object
、of
、on
、operator
、or
、order
、orderbytop
、output
、partition
、partitionwin
、partnwin
、passing
、path
、pattern
、patternstrm
、patternstrmb
、prev
、primary
、project
、push
、query
、queue
、range
、rangewin
、real
、register
、relation
、relsrc
、remove
、return
、returning
、rows
、rowwin
、rstream
、run
、run_time
、sched_name
、sched_threaded
、schema
、second
、seconds
、select
、semantics
、set
、silent
、sink
、slide
、source
、spill
, start
、stop
、storage
、store
、stream
、strmsrc
、subset
、sum
、synopsis
、system
、systemstate
、then
、time
、time_slice
、timeout
、timer
、timestamp
、timestamped
、to
、true
、trusted
、type
、unbounded
、union
、update
、using
、value
、view
、viewrelnsrc
、viewstrmsrc
、wellformed
、when
、where
、window
、xmlagg
、xmlattributes
、xmlcolattval
、xmlconcat
、xmldata
、xmlelement
、xmlexists
、xmlforest
、xmlparse
、xmlquery
、xmltable
、xmltype
または xor
。
目的
1 つ以上の引数をストリーム要素を使用する算術式として指定するには、non_mt_arg_list
句を使用します。1 つ以上の引数をストリーム要素として直接指定するには、non_mt_attr_list::= を参照してください。
non_mt_arg_list
句は以下の Oracle CQL 文で使用できます。
要件
参照しているストリーム要素がある場合は、ストリームが存在している必要があります。
構文
セマンティクス
arith_expr
引数値に解決される算術式を指定します。
目的
1 つ以上の引数をストリーム要素として直接指定するには、non_mt_attr_list
句を使用します。1 つ以上の引数をストリーム要素を使用する算術式として指定するには、non_mt_arg_list::= を参照してください。
non_mt_attr_list
句は以下の Oracle CQL 文で使用できます。
要件
参照しているストリーム要素がある場合は、ストリームが存在している必要があります。
構文
(attr::=)
セマンティクス
attr
引数をストリーム要素として直接指定します。
目的
1 つ以上のストリーム要素を名前で指定するには、non_mt_attrname_list
句を使用します。
non_mt_attrname_list
句は以下の Oracle CQL 文で使用できます。
要件
参照しているストリーム要素がある場合は、ストリームが存在している必要があります。
構文
セマンティクス
identifier
ストリーム要素を名前で指定します。
目的
ストリーム要素の識別子とデータ型を定義する 1 つ以上の属性仕様を指定するには、non_mt_attrspec_list
句を使用します。
non_mt_attrspec_list
句は以下の Oracle CQL 文で使用できます。
要件
参照しているストリーム要素がある場合は、ストリームが存在している必要があります。
構文
セマンティクス
attrspec
属性の識別子とデータ型を指定します。
目的
AND
、OR
、XOR
、および NOT
の論理演算子の任意の組み合わせを使用して 1 つ以上の条件を指定するには、non_mt_cond_list
句を使用します。
non_mt_cond_list
句は以下の Oracle CQL 文で使用できます。
詳細については、第 12 章「条件」を参照してください。
要件
なし。
構文
(non_mt_cond_list::=、condition::=、between_condition::=)
セマンティクス
condition
比較条件を指定します。
詳細については、節 12.2「比較条件」を参照してください。
構文については、condition::= (親 : non_mt_cond_list::=) を参照してください。
between_condition
範囲に含まれているかをテストする条件を指定します。
詳細については、節 12.5「範囲条件」を参照してください。
構文については、between_condition::= (親 : non_mt_cond_list::=) を参照してください。
non_mt_arg_list_set
演算子の左に複数の式がある形式の IN
条件を使用する場合は、non_mt_arg_list_set
を使用する必要があり、各リスト内の式は個数とデータ型が一致している必要があります。
詳細については、節 12.8「IN 条件」を参照してください。
構文については、non_mt_arg_list_set::= (親 : non_mt_cond_list::=) を参照してください。
目的
プライマリ キー整合性制約によって任意のデータ型のタプルを制限するには、この out_of_line_constraint
句を使用します。
USE UPDATE SEMANTICS
を使用してリレーションのクエリをコンフィグレーションすることを検討している場合は、1 つ以上のストリーム要素をプライマリ キーとして宣言する必要があります。この制限を使用して、1 つ以上のストリーム要素の値から成る複合プライマリ キーを指定します。
out_of_line_constraint
句は以下の Oracle CQL 文で使用できます。
詳細については、以下を参照してください。
要件
out_of_line_constraint
で指定するタプルが null 値を含むことはできません。
構文
セマンティクス
non_mt_attrname_list
プライマリ キー整合性制約によって制限される 1 つ以上のタプルを指定します。
目的
既存の Oracle CQL クエリを名前で参照するには、query_ref
句を使用します。
以下の Oracle CQL 文で Oracle CQL クエリを参照できます。
要件
クエリが存在している必要があります (「Query」を参照)。
構文
セマンティクス
identifier
クエリの名前を指定します。これは、以降の Oracle CQL 文でクエリを参照するのに使用する名前です。
目的
日数、時間数、分数、秒数、ミリ秒数、またはナノ秒数で期間を定義するには、time_spec
句を使用します。
デフォルト : 単位を指定しない場合、Oracle CEP では [second|seconds]
が想定されます。
time_spec
句は以下の Oracle CQL 文で使用できます。
要件
なし。
構文
time_unit::=
セマンティクス
integer
時間単位の数を指定します。
time_unit
時間単位を指定します。
目的
1 つ以上の XML 属性を指定するには、xml_attribute_list
句を使用します。
xml_attribute_list
句は以下の Oracle CQL 文で使用できます。
要件
参照しているストリーム要素がある場合は、ストリームが存在している必要があります。
構文
セマンティクス
xml_attr_list
1 つ以上の XML 属性を指定します (例 13-2 を参照)。
例 13-2 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::=) を参照してください。
目的
1 つ以上の XML 属性を指定するには、xml_attr_list
句を使用します。
xml_attr_list
句は以下の Oracle CQL 文で使用できます。
要件
参照しているストリーム要素がある場合は、ストリームが存在している必要があります。
構文
xml_attr::=
(const_string::=、arith_expr::=、attr::=)
セマンティクス
xml_attr
XML 属性を指定します。
構文については、xml_attr::= (親 : xml_attr_list::=) を参照してください。
目的
XML クエリに 1 つ以上の引数を指定するには、xqryargs_list
句を使用します。
non_mt_arg_list
句は以下の Oracle CQL 文で使用できます。
要件
参照しているストリーム要素がある場合は、ストリームが存在している必要があります。
構文
xqryarg::=
(const_string::=、arith_expr::=)
セマンティクス
xqryarg
ストリーム要素の値を XQuery 変数または XPath 演算子にバインドする句。
1 つ以上のストリーム要素を使用する任意の算術式を (arith_expr::= を参照)、指定された XQuery の変数または XPath 演算子 ("."
など) に引用符付きの文字列としてバインドできます。
構文については、xqryarg::= (親 : xqryargs_list::=) を参照してください。