ヘッダーをスキップ
Oracle® Complex Event Processing CQL言語リファレンス
11g リリース1(11.1.1.4.0)
B61613-02
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

5

とは、1つ以上の値と1つ以上の演算の組合せです。値には、限定された値を持つ定数、値に評価される関数、または値を含む属性を使用できます。式はそれぞれのデータ型に割り当てられます。

次の単純な式は4に評価され、データ型はNUMBER(構成要素と同一のデータ型)です。

2*2 

次の式は、関数と演算子を使用するより複雑な式の例です。この式は現在の日付に7日を加算し、合計から時間の要素を削除し、結果をCHARデータ型に変換します。

TO_CHAR(TRUNC(SYSDATE+7)) 

5.1 式の概要

Oracle CEPでは、次の式が用意されています。

次の場所で式を使用できます。

Oracle CEPではOracle CQL文の一部で式の形式の一部が使用できない場合があります。Oracle CQL文の式の制限の詳細は、第20章「Oracle CQL文」で個々のOracle CQL文を参照してください。

このリファレンスの他の部分で説明している条件、Oracle CQL関数、Oracle CQL文でexprと示されている箇所では、適切な式表記を使用する必要があります。それに続く項では、様々な式の例をあげて説明しています。


注意:

ストリーム入力の例で、hで始まる行(h 3800など)はハートビート入力タプルです。これは、ハートビート値よりも小さいタイムスタンプを持つこれ以上の入力がないことをOracle CEPに通知します。


aggr_distinct_expr

distinctを使用して集計の組込み関数を使用する場合は、aggr_distinct_expr集計式を使用します。distinctを使用せずに集計の組込み関数を使用する場合は、aggr_exprを参照してください。

aggr_distinct_expr::=

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

(arith_expr::=)

arith_distinct_exprは集計式の引数として指定できます。

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

詳細は、第9章「組込みの集計関数」を参照してください。

例5-2COUNT集計(Distinct)式の使用方法を示します。

例5-1 COUNTのaggr_distinct_expr

create view viewq2Cond1(ACCT_INTRL_ID, sumForeign, countForeign) as 
         select ACCT_INTRL_ID, sum(TRXN_BASE_AM), count(distinct ADDR_CNTRY_CD)
         from ValidCashForeignTxn[range 48 hours]
         group by ACCT_INTRL_ID 
         having ((sum(TRXN_BASE_AM) * 100) >= (1000 * 60) and
                 (count(distinct ADDR_CNTRY_CD >= 2)))

aggr_expr

集計の組込み関数を使用する場合は、aggr_distinct_expr集計式を使用します。distinctを使用して集計の組込み関数を使用する場合は、aggr_distinct_exprを参照してください。

aggr_expr::=

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

(arith_expr::=identifier::=attr::=xml_agg_expr::=)

arith_exprは集計式の引数として指定できます。

count組込み集計関数は、表5-1でリストされているいずれかの値で構成される単一の引数を使用し、示されたintを返します。

表5-1 COUNT集計関数の戻り値

入力引数 戻り値

arith_expr

arith_exprがnullでない場合のタプルの数。

*


重複とnullを含む、すべてのタプルの数。

identifier.*

相関変数identifierと一致する、重複とnullを含む、すべてのタプルの数。

identifier.attr

attrがnullでない場合に、相関変数identifierと一致するタプルの数。


firstおよびlast集計組込み関数は、次のピリオド区切りの値から成る単一の引数を使用します。

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

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

例5-2COUNT集計式の使用方法を示します。

例5-2 COUNTのaggr_expr

<view id="SegVol" schema="exp_way lane dir seg volume"><![CDATA[ 
    select 
        exp_way, 
        lane, 
        dir, 
        seg, 
        count(*) as volume 
    from 
        CurCarSeg 
    group by 
        exp_way,
        lane, 
        dir, 
        seg 
    having 
        count(*) > 50
]]></view>

arith_expr

ストリーム要素の属性値、定数値、関数式の結果、集計組込み関数、case式またはdecodeの任意の組合せを使用して算術式を定義するには、arith_expr算術式を使用します。すべての一般的な算術演算子(+-*/)および連結演算子(||)を使用できます。

arith_expr::=

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

(attr::=const_value::=func_expr::=aggr_expr::=aggr_distinct_expr::=case_expr::=decode::=arith_expr::=)

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

詳細は、「算術演算子」を参照してください。

例5-3arith_expr式の使用方法を示します。

例5-3 arith_expr

<view id="SegVol" schema="exp_way lane dir seg volume"><![CDATA[ 
    select 
        exp_way, 
        speed * 1.5 as adjustedSpeed, 
        dir, 
        max(seg) as maxSeg, 
        count(*) as volume 
    from 
        CurCarSeg 
    having 
        adjustedSpeed > 50
]]></view>

arith_expr_list

ストリーム要素の属性値、定数値、関数式の結果、集計組込み関数、case式またはdecodeの任意の組合せを使用して1つ以上の算術式を定義するには、arith_expr_list算術式リストを使用します。すべての一般的な算術演算子(+-*/)および連結演算子(||)を使用できます。

arith_expr_list::=

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

(arith_expr::=)

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

詳細は、「算術演算子」を参照してください。

例5-4arith_expr_list式の使用方法を示します。

例5-4 arith_expr_list

<query id="q1"><![CDATA[ 
    select
        XMLELEMENT("Emp", XMLELEMENT("Name", e.job_id||' '||e.last_name),            XMLELEMENT("Hiredate", e.hire_date)
        )
    from 
        tkdata51_S0 [range 1] as e
]]></query>

case_expr

複数の条件でストリーム要素を評価するには、case式case_exprを使用します。

case_expr::=

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

(searched_case_list::=arith_expr::=simple_case_list::=)

searched_case_list::=

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

(searched_case::=)

searched_case::=

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

(non_mt_cond_list::=arith_expr::=)

simple_case_list::=

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

(simple_case::=)

simple_case::=

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

(arith_expr::=)

case_exprは算術式のDECODE句と同様です(decodeを参照)。

searched_case句では、non_mt_cond_listがtrueに評価される場合、searched_case句によって算術式またはnullのいずれかが返されます。

simple_case句では、算術式がtrueである場合、simple_case句によって別の算術式またはnullのいずれかが返されます。

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

この項では、case_exprの次の例について説明します。

case_expr with SELECT *

例5-5の問合せq97例5-6のデータ・ストリームS0があるとします。ストリームS1のスキーマは(c1 float, c2 integer)です。例5-7は、問合せで返されるリレーションを示します。

例5-5 CASE式: SELECT *の問合せ

<query id="q97"><![CDATA[ 
    select * from S0 
    where 
        case 
            when c2 < 25 then c2+5 
            when c2 > 25 then c2+10 
        end > 25
]]></query>

例5-6 CASE式: SELECT *のストリーム入力

Timestamp   Tuple
     1000    0.1,10
     1002   0.14,15
   200000    0.2,20
   400000    0.3,30
   500000    0.3,35
   600000       ,35
h 800000
100000000   4.04,40
h 200000000

例5-6 CASE式: SELECT *のリレーション出力

Timestamp   Tuple Kind  Tuple
400000:+ 0.3,30
500000:+ 0.3,35
600000:+ ,35
100000000:+ 4.04,40

case_expr with SELECT

例5-8の問合せq96例5-9S0および例5-10S1の各データ・ストリームがあるとします。ストリームS0のスキーマは(c1 float, c2 integer)です。ストリームS1のスキーマは(c1 float, c2 integer)です。例5-11は、問合せで返されるリレーションを示します。

例5-8 CASE式: SELECTの問合せ

<query id="q96"><![CDATA[ 
    select 
        case to_float(S0.c2+10) 
            when (S1.c2*100)+10 then S0.c1+0.5 
            when (S1.c2*100)+11 then S0.c1 
            else S0.c1+0.3 
        end 
    from 
        S0[rows 100], 
        S1[rows 100]
]]></query>

例5-9 CASE式: SELECTのストリームS0入力

Timestamp   Tuple
     1000    0.1,10
     1002   0.14,15
   200000    0.2,20
   400000    0.3,30
   500000    0.3,35
   600000       ,35
h 800000
100000000   4.04,40
h 200000000

例5-10 CASE式: SELECTのストリームS1入力

Timestamp   Tuple
     1000   10,0.1
     1002   15,0.14
   200000   20,0.2
   300000     ,0.2
   400000   30,0.3
100000000   40,4.04

例5-11 CASE式: SELECTのリレーション出力

Timestamp   Tuple Kind  Tuple
     1000:  +           0.6
     1002:  +           0.44
     1002:  +           0.4
     1002:  +           0.14
   200000:  +           0.5
   200000:  +           0.5
   200000:  +           0.4
   200000:  +           0.44
   200000:  +           0.7
   300000:  +           0.4
   300000:  +           0.44
   300000:  +           0.7
   400000:  +           0.6
   400000:  +           0.6
   400000:  +           0.6
   400000:  +           0.6
   400000:  +           0.4
   400000:  +           0.44
   400000:  +           0.5
   400000:  +           0.8
   500000:  +           0.6
   500000:  +           0.6
   500000:  +           0.6
   500000:  +           0.6
   500000:  +           0.6
   600000:  +
   600000:  +
   600000:  +
   600000:  +
   600000:  +
100000000:  +           4.34
100000000:  +           4.34
100000000:  +           4.34
100000000:  +           4.34
100000000:  +           4.34
100000000:  +           0.4
100000000:  +           0.44
100000000:  +           0.5
100000000:  +           0.6
100000000:  +           0.6
100000000:  +
100000000:  +           4.34

decode

複数の条件でストリーム要素を評価するには、decode式を使用します。

decode::=

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

(non_mt_arg_list::=)

DECODEでは、次の形式を持つnon_mt_arg_listが予期されます。

expr, search1, result1, search2, result2, ... , searchN, result N, default

DECODEは、exprを各search値と1つずつ比較します。exprsearch値と一致した場合、DECODE式は対応するresult値を返します。一致する値がない場合、DECODE式はdefaultを返します。defaultが省略されている場合、DECODE式はnullを返します。

引数には任意の数値データ型(INTEGERBIGINTFLOATDOUBLE)または文字データ型(CHAR)を使用できます。詳細は、2.2項「データ型」を参照してください。

searchresultおよびdefaultの各値は式から派生できます。Oracle CEPでは短絡評価が使用されます。すべてのsearch値を評価してからそれらをexprと比較するかわりに、各search値はexprとの比較が行われる前にのみ評価されます。このため、Oracle CEPでは、前回の検索j (0 < j < i)exprと一致した場合に検索iは評価されません。

Oracle CEPでは、比較を行う前にexprと各search値が最初のsearch値のデータ型に自動的に変換されます。戻り値は最初のresultと同じデータ型に自動的に変換されます。

DECODE式では、Oracle CEPによって2つのnullが同等と見なされます。exprがnullのとき、Oracle CEPでは最初のsearchが同様にnullである場合にそのresultが返されます。

exprsearchesresultsおよびdefaultを含むDECODE式の要素の最大数は255です。

decode式はcase_exprと同様です(case_expr::=を参照)。

decode式は次のOracle CQL文で使用できます。

例5-12の問合せq例5-13のリレーションRがあるとします。リレーションRのスキーマは(c1 float, c2 integer)です。例5-14は、問合せで返されるリレーションを示します。

例5-12 算術式とDECODEの問合せ

<query id="q"><![CDATA[ 
...
    SELECT DECODE (c2, 10, c1+0.5, 20, c1+0.1, 30, c1+0.2, c1+0.3) from R
]]></query>

例5-13 算術式とDECODEのリレーション入力

Timestamp   Tuple Kind  Tuple
     1000:  +            0.1,10
     1002:  +           0.14,15
     2000:  -            0.1,10
     2002:  -           0.14,15
   200000:  +            0.2,20
   201000:  -            0.2,20
   400000:  +            0.3,30
   401000:  -            0.3,30
   500000:  +            0.3,35
   501000:  -            0.3,35
   600000:  +               ,35
   601000:  -               ,35
100000000:  +           4.04,40
100001000:  -           4.04,40

例5-14 算術式とDECODEのリレーション出力

Timestamp   Tuple Kind  Tuple
     1000:  +           0.6
     1002:  +           0.44
   200000:  +           0.3
   400000:  +           0.5
   500000:  +           0.6
100000000:  +           4.34

func_expr

任意のOracle CQL組込み関数、ユーザー定義関数またはOracleデータ・カートリッジ関数を使用して関数呼出しを定義するには、func_expr関数式を使用します。

func_expr::=

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

(identifier::=const_int::=const_bigint::=const_string::=xqryargs_list::=non_mt_arg_list::=xml_parse_expr::=xmlelement_expr::=xmlforest_expr::=xmlcolattval_expr::=func_name:=link::=arith_expr::=)

func_name:=

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

(identifier::=)

func_name

次のように、関数の識別子を明示的に指定できます。

PREV

PREV関数は、次のピリオド区切りのidentifier引数から成る単一の引数を使用します。

また、PREV 関数は次のconst_int引数を使用します。

詳細は、「prev」を参照してください。例については、「func_expr PREV関数の例」を参照してください。

XQuery: XMLEXISTSとXMLQUERY

Oracle CEPによってXMLストリーム要素データに適用される、xqryargs_listにバインドされたXQueryを指定できます。詳細は、次の項を参照してください。

xqryargs_listは、selectリストからの1つ以上のストリーム要素、ASキーワード、XQuery変数または演算子(現在のノード演算子"."など)を表すconst_stringを使用する算術式から成る1つ以上のxqryargインスタンスのカンマ区切りのリストです。詳細は、xqryargs_list::=を参照してください。

例については、「func_expr XMLQUERY関数の例」を参照してください。

詳細は、「SQL/XML (SQLX)」を参照してください。

XMLCONCAT

XMLCONCAT関数は、カンマ区切りのxmltype引数の連結をxmltypeとして返します。

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

SQL/XML (SQLX)

SQLX仕様はXMLデータをサポートするようにSQLを拡張します。

Oracle CQLではタイプSQLXのプロパティを含むイベント・タイプがサポートされます。この場合、Oracle CEPサーバーはOracle CQL内でSQLXからStringに変換し、出力時にStringからSQLXに変換します。

Oracle CQLではSQLXストリームからのデータを操作する次の式(および関数)を提供します。たとえば、SQLXストリーム要素を使用したXML要素または属性の作成、より大きいXMLフラグメントへの結合、XMLコンテンツまたはドキュメントの入力の解析などができます。


注意:

Oracle CQLでは、タイプXMLTYPEの列との外部リレーションはサポートされません(リレーショナル・データベース管理システムとの結合など)。詳細は、2.2.1項「Oracle CQL組込みデータ型」を参照してください。

Oracle CQL SQLX式の詳細は、次の項を参照してください。

Oracle CQL SQLX関数の詳細は、次の項を参照してください。

Oracle CQLでXMLを使用する場合のデータ型の制限については、次の項を参照してください。

SQLXの詳細は、『Oracle Database SQL言語リファレンス』を参照してください。

FIRSTとLAST

FIRST関数とLAST関数は、次のピリオド区切りの個別の値から成る単一の引数をそれぞれ使用します。

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

non_mt_arg_listを明示的に使用して、または使用せずに、関数の識別子を指定できます。これは、組込み関数またはユーザー定義関数の呼び出しに適した引数のリストです。リストには単一または複数の引数を使用できます。

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

詳細は、1.1.11項「関数」を参照してください。

この項では、func_exprの次の例について説明します。

func_expr PREV関数の例

例5-15に、PREV関数を呼び出すfunc_exprの作成方法を示します。

例5-15 PREVのfunc_expr

<query id="q36"><![CDATA[ 
    select T.Ac1 from S15 
    MATCH_RECOGNIZE ( 
        PARTITION BY
            c2 
        MEASURES 
            A.c1 as Ac1 
        PATTERN(A) 
        DEFINE 
            A as (A.c1 = PREV(A.c1,3,5000) )
    ) as T
]]></query>

func_expr XMLQUERY関数の例

例5-16に、XMLQUERY関数を呼び出すfunc_exprの作成方法を示します。

例5-16 XMLQUERYのfunc_expr

<query id="q1"><![CDATA[ 
    select
        xmlexists(
            "for $i in /PDRecord where $i/PDId <= $x return $i/PDName" 
            passing by value 
                c2 as ".", 
                (c1+1) as "x" 
            returning content
        ) xmldata
    from
        S1
]]></query>

例5-17に、SUM関数を呼び出すfunc_exprの作成方法を示します。

例5-17 SUMのfunc_expr

<query id="q3"><![CDATA[ 
    select sum(c2) from S1[range 5]
]]></query>

object_expr

データ・カートリッジ複合型のメンバーを参照するには、object_expr式を使用します。

object_exprは、算術式が使用できる場所であればどこでも使用できます。詳細は、arith_exprを参照してください。

object_expr::=

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

オプションとして、object_exprでリンク(@)を使用してデータ・カートリッジ名を指定できます。必要に応じて、linkを使用してOracle CQLデータ・カートリッジ複合型のクラス、メソッド、フィールドまたはコンストラクタの場所を指定し、参照の曖昧性を解消します。この場所は、名前でデータ・カートリッジを参照する必要があります。たとえば、2つのデータ・カートリッジ(myCartridgeyourCartridge)の両方が複合型com.package.ThisClassを定義する場合、link句を使用して、使用するcom.package.ThisClassを明示的に特定する必要があります。


注意:

デフォルトのJavaデータ・カートリッジで提供されている型を使用する場合、linkは不要です。

link::=

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

(methodname::=data_cartridge_name::=param_list::=qualified_type_name::=)

data_cartridge_name::=

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

(identifier::=)

data_cartridge_name

各Oracle CQLデータ・カートリッジ実装は、一意のデータ・カートリッジ名で識別されます。

データ・カートリッジ名には、次のものが含まれます。

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

型宣言

qualified_type_name@data_cartridge_nameを使用して、イベント・プロパティを複合型として宣言します。

例については、「型宣言の例: linkを参照してください。

フィールド・アクセス

複合型フィールドにアクセスする場合、フィールドの型によってすでに場所が識別されているため、リンクは指定できません。次の文は使用できません

SELECT java.lang.String(“foo”).CASE_INSENSITIVE_ORDER@java …

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

メソッド・アクセス

複合型メソッドにアクセスする場合、メソッドの型によってすでに場所が識別されているため、リンクは指定できません。次の文は使用できません

SELECT java.lang.String(“foo”).substring@java(0,1) …

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

コンストラクタ呼出し

qualified_type_name@data_cartridge_name(param_list)を使用して、複合型コンストラクタを呼び出します。

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

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

オブジェクト式の例

例5-18object_exprを示します。

getContainingGeometries@spatial (InputPoints.point)

このobject_exprは、1つのパラメータ(InputPoints.point)を渡してOracle SpatialメソッドgetContainingGeometriesを呼び出すデータ・カートリッジTABLE句を使用します。このメソッドの戻り値、Oracle CEP ITypeレコードのCollectionには、別名validGeometriesが作成されます。表ソース自体には別名R2が作成されます。

例5-18 データ・カートリッジTABLEの問合せ

<query id="q1"><![CDATA[ 
RSTREAM (
    SELECT 
        R2.validGeometries.shape as containingGeometry,
        R1.point as inputPoint
    FROM 
        InputPoints[now] as R1,
        TABLE (getContainingGeometries@spatial (InputPoints.point) as validGeometries) AS R2
)
]]></query>

型宣言の例: link

例5-19に、イベント・タイプを、イベント・プロパティをOracle CQLデータ・カートリッジmyCartridgeに属するパッケージcom.mypackageで定義されたOracle CQLデータ・カートリッジ複合型MyTypeとして指定するJavaクラスとして作成する方法を示します。com.myPackage.MyTypeが他のOracle CQLデータ・カートリッジで定義されている場合(データ・カートリッジ名otherCatridgeで)、リンクとデータ・カートリッジ名myCartridgeを使用してa1プロパティの型を指定することで、Oracle CQLは正しい複合型を参照できます。

例5-19 Oracle CQLデータ・カートリッジ・リンクを使用した型宣言

package com.myapplication.event;

import java.util.Date;
import // Oracle CQL data cartridge package(s)?

public final class MarketEvent {
    private final String symbol;
    private final Double price;
    private final com.myPackage.MyType@myCartridge a1;

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

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

例5-20に、複合型MyTypeをインスタンス化して静的フィールドMY_FIELDにアクセスする方法を示します。link句は、Oracle CQLデータ・カートリッジmyCartridgeに属するcom.myPackage.MyTypeクラスを明示的に参照します。

例5-20 Oracle CQLデータ・カートリッジ・リンクを使用したフィールド・アクセス

<query id="q1"><![CDATA[ 
    SELECT com.myPackage.MyType@myCartridge(“foo”).MY_FIELD ...
]]></query>

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

例5-21に、複合型MyTypeをインスタンス化してメソッドmyMethodにアクセスする方法を示します。link句は、Oracle CQLデータ・カートリッジmyCartridgeに属するcom.myPackage.MyTypeクラスを明示的に参照します。

例5-21 Oracle CQLデータ・カートリッジ・リンクを使用した型宣言

<query id="q1"><![CDATA[ 
    SELECT com.myPackage.MyType@myCartridge(“foo”).myMethod("bar") ...
]]></query>

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

例5-22に、複合型MyTypeをインスタンス化する方法を示します。link句は、Oracle CQLデータ・カートリッジmyCartridgeに属するcom.myPackage.MyTypeクラスを明示的に参照します。

例5-22 Oracle CQLデータ・カートリッジ・リンクを使用した型宣言

<query id="q1"><![CDATA[ 
    SELECT com.myPackage.MyType@myCartridge(“foo”) ...
]]></query>

order_expr

Oracle CEPが問合せで選択されたタプルを返すソート順を指定するには、order_expr式を使用します。

order_expr::=

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

(attr::=const_int::=)

ストリーム要素はattr名で指定できます。

または、const_int索引でもストリーム要素を指定できます。索引はストリームの登録または作成時に指定したストリーム要素の位置に対応します。

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

例5-23を示します。ストリームS3のスキーマは(c1 bigint, c2 interval, c3 byte(10), c4 float)です。この例は、問合せq210の結果をc1c2の順でソートする方法と、問合せq211の結果をc2、索引3のストリーム要素(c3)、索引4のストリーム要素(c4)の順でソートする方法を示します。

例5-23 order_expr

<query id="q210"><![CDATA[ 
    select * from S3 order by c1 desc nulls first, c2 desc nulls last
]]></query>
<query id="q211"><![CDATA[ 
    select * from S3 order by c2 desc nulls first, 3 desc nulls last, 4 desc
]]></query>

xml_agg_expr

XMLフラグメントのコレクションを集計されたXMLドキュメントとして返すには、xml_agg_expr式を使用します。nullを返す引数は結果から削除されます。

xml_agg_expr::=

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

(arith_exprorder_by_clause::=)

xml_agg_exprは集計式の引数として指定できます。

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

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

例5-24の問合せtkdata67_q1例5-25の入力リレーションtkdata67_S0があるとします。リレーションtkdata67_S0のスキーマは(c1 integer, c2 float)です。例5-26は、問合せで返されるリレーションを示します。

例5-24 xml_agg_exprの問合せ

<query id="tkdata67_q1"><![CDATA[ 
    select 
        c1, 
        xmlagg(xmlelement("c2",c2)) 
    from 
        tkdata67_S0[rows 10] 
    group by c1
]]></query>

例5-25 xml_agg_exprのリレーション入力

Timestamp           Tuple
 1000               15, 0.1
 1000               20, 0.14
 1000               15, 0.2
 4000               20, 0.3
10000               15, 0.04
h 12000

例5-26 xml_agg_exprのリレーション出力

Timestamp   Tuple Kind  Tuple
1000:       +           15,<c2>0.1</c2>
                           <c2>0.2</c2>
1000:       +           20,<c2>0.14</c2>
4000:       -           20,<c2>0.14</c2>
4000:       +           20,<c2>0.14</c2>
                           <c2>0.3</c2>
10000:      -           15,<c2>0.1</c2>
                           <c2>0.2</c2>
10000:      +           15,<c2>0.1</c2>
                           <c2>0.2</c2>
                           <c2>0.04</c2>

xmlcolattval_expr

XMLフラグメントを作成し、各XMLフラグメントに名前列と属性名が含まれるように結果のXMLを拡張するには、xmlcolattval_expr式を使用します。

xmlcolattval_expr::=

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

(xml_attr_list::=)

xmlcolattval_exprは関数式の引数として指定できます。特に、SQLXストリームの処理に役立ちます。詳細は、「SQL/XML (SQLX)」を参照してください。

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

詳細は、『Oracle Database SQL言語リファレンス』のXMLCOLATTVALに関する項を参照してください。

例5-24の問合せtkdata53_q1例5-25の入力リレーションtkdata53_S0があるとします。リレーションtkdata53_S0のスキーマは(c1 integer, c2 float)です。例5-26は、問合せで返されるリレーションを示します。

例5-27 xmlcolattval_exprの問合せ

<query id="tkdata53_q1"><![CDATA[ 
    select 
        XMLELEMENT("tkdata53_S0", XMLCOLATTVAL( tkdata53_S0.c1, tkdata53_S0.c2)) 
    from 
        tkdata53_S0 [range 1]
]]></query>

例5-28 xmlcolattval_exprのリレーション入力

Timestamp                Tuple
     1000:               10, 0.1
     1002:               15, 0.14
   200000:               20, 0.2
   400000:               30, 0.3
h 800000
100000000:               40, 4.04
h 200000000

例5-29 xmlcolattval_exprのリレーション出力

Timestamp   Tuple Kind  Tuple
     1000:       +      <tkdata53_S0>
                            <column name="c1">10</column>
                            <column name="c2">0.1</column>
                        </tkdata53_S0>
     1002:       +      <tkdata53_S0>
                            <column name="c1">15</column>
                            <column name="c2">0.14</column>
                        </tkdata53_S0>
     2000:       -      <tkdata53_S0>
                            <column name="c1">10</column>
                            <column name="c2">0.1</column>
                        </tkdata53_S0>
     2002:       -      <tkdata53_S0>
                            <column name="c1">15</column>
                            <column name="c2">0.14</column>
                        </tkdata53_S0>
   200000:       +      <tkdata53_S0>
                            <column name="c1">20</column>
                            <column name="c2">0.2</column>
                        </tkdata53_S0>
   201000:       -      <tkdata53_S0>
                            <column name="c1">20</column>
                            <column name="c2">0.2</column>
                        </tkdata53_S0>
   400000:       +      <tkdata53_S0>
                            <column name="c1">30</column>
                            <column name="c2">0.3</column>
                        </tkdata53_S0>
   401000:       -      <tkdata53_S0>
                            <column name="c1">30</column>
                            <column name="c2">0.3</column>
                        </tkdata53_S0>
100000000:       +      <tkdata53_S0>
                            <column name="c1">40</column>
                            <column name="c2">4.04</column>
                        </tkdata53_S0>
100001000:       -      <tkdata53_S0>
                            <column name="c1">40</column>
                            <column name="c2">4.04</column>
                        </tkdata53_S0>

xmlelement_expr

ストリーム要素から整形式のXML要素を作成する必要がある場合は、xmlelement_expr式を使用します。

xmlelement_expr::=

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

(const_string::=arith_expr::=xml_attribute_list::=arith_expr_list::=)

xmlelement_exprは関数式の引数として指定できます。特に、SQLXストリームの処理に役立ちます。詳細は、「SQL/XML (SQLX)」を参照してください。

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

詳細は、『Oracle Database SQL言語リファレンス』のXMLELEMENTに関する項を参照してください。

例5-30の問合せtkdata51_q0例5-31の入力リレーションtkdata51_S0があるとします。リレーションtkdata51_S0のスキーマは(c1 integer, c2 float)です。例5-32は、問合せで返されるリレーションを示します。

例5-30 xmlelement_exprの問合せ

<query id="tkdata51_q0"><![CDATA[ 
    select 
        XMLELEMENT(
            NAME "S0", 
            XMLELEMENT(NAME "c1", tkdata51_S0.c1), 
            XMLELEMENT(NAME "c2", tkdata51_S0.c2)
        ) 
    from 
        tkdata51_S0 [range 1]
]]></query>

例5-31 xmlelement_exprのリレーション入力

Timestamp                Tuple
     1000:               10, 0.1
     1002:               15, 0.14
   200000:               20, 0.2
   400000:               30, 0.3
h 800000
100000000:               40, 4.04
h 200000000

例5-32 xmlelement_exprのリレーション出力

Timestamp   Tuple Kind  Tuple
     1000:  +           <S0>
                            <c1>10</c1>
                            <c2>0.1</c2>
                        </S0>
     1002:  +           <S0>
                            <c1>15</c1>
                            <c2>0.14</c2>
                        </S0>
     2000:  -           <S0>
                            <c1>10</c1>
                            <c2>0.1</c2>
                        </S0>
     2002:  -           <S0>
                            <c1>15</c1>
                            <c2>0.14</c2>
                        </S0>
   200000:  +           <S0>
                            <c1>20</c1>
                            <c2>0.2</c2>
                        </S0>
   201000:  -           <S0>
                            <c1>20</c1>
                            <c2>0.2</c2>
                        </S0>
   400000:  +           <S0>
                            <c1>30</c1>
                            <c2>0.3</c2>
                        </S0>
   401000:  -           <S0>
                            <c1>30</c1>
                            <c2>0.3</c2>
                        </S0>
100000000:  +           <S0>
                            <c1>40</c1>
                            <c2>4.04</c2>
                        </S0>
100001000:  -           <S0>
                            <c1>40</c1>
                            <c2>4.04</c2>
                        </S0>

xmlforest_expr

各引数パラメータをXMLに変換し、これらの変換された引数を連結したXMLフラグメントを返すには、xmlforest_exprを使用します。

xmlforest_expr::=

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

(xml_attr_list::=)

xmlforest_exprは関数式の引数として指定できます。特に、SQLXストリームの処理に役立ちます。詳細は、「SQL/XML (SQLX)」を参照してください。

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

詳細は、『Oracle Database SQL言語リファレンス』のXMLFORESTに関する項を参照してください。

例5-33の問合せtkdata52_q0例5-34の入力リレーションtkdata52_S0があるとします。リレーションtkdata52_S0のスキーマは(c1 integer, c2 float)です。例5-35は、問合せで返されるリレーションを示します。

例5-33 xmlforest_exprの問合せ

<query id="tkdata52_q0"><![CDATA[ 
    select 
        XMLFOREST( tkdata52_S0.c1, tkdata52_S0.c2) 
    from 
        tkdata52_S0 [range 1]
]]></query>

例5-34 xmlforest_exprのリレーション入力

Timestamp                Tuple
     1000:               10, 0.1
     1002:               15, 0.14
   200000:               20, 0.2
   400000:               30, 0.3
h 800000
100000000:               40, 4.04
h 200000000

例5-35 xmlforest_exprのリレーション出力

Timestamp   Tuple Kind  Tuple
     1000:  +           <c1>10</c1>
                        <c2>0.1</c2>
     1002:  +           <c1>15</c1>
                        <c2>0.14</c2>
     2000:  -           <c1>10</c1>
                        <c2>0.1</c2>
     2002:  -           <c1>15</c1>
                        <c2>0.14</c2>
   200000:  +           <c1>20</c1>
                        <c2>0.2</c2>
   201000:  -           <c1>20</c1>
                        <c2>0.2</c2>
   400000:  +           <c1>30</c1>
                        <c2>0.3</c2>
   401000:  -           <c1>30</c1>
                        <c2>0.3</c2>
100000000:  +           <c1>40</c1>
                        <c2>4.04</c2>
100001000:  -           <c1>40</c1>
                        <c2>4.04</c2>

xml_parse_expr

arith_exprの評価された結果からXMLインスタンスを解析および生成するには、xml_parse_expr式を使用します。

xml_parse_expr::=

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

(arith_expr::=)

xml_parse_expr式の使用では、次のことに注意します。

xml_parse_exprは関数式の引数として指定できます。特に、SQLXストリームの処理に役立ちます。詳細は、「SQL/XML (SQLX)」を参照してください。

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

詳細は、『Oracle Database SQL言語リファレンス』のXMLPARSEに関する項を参照してください。

この項では、xml_parse_exprの次の例について説明します。

xml_parse_exprコンテンツの例

例5-36の問合せtkdata62_q3例5-37の入力リレーションtkdata62_S1があるとします。リレーションtkdata62_S1のスキーマは(c1 char(30))です。例5-38は、問合せで返されるリレーションを示します。

例5-36 xml_parse_exprコンテンツ: 問合せ

<query id="tkdata62_q3"><![CDATA[ 
    select XMLPARSE(CONTENT c1) from tkdata62_S1
]]></query>

例5-37 xml_parse_exprコンテンツ: リレーション入力

Timestamp               Tuple
1000                    "<a>3</a>"
1000                    "<e3>blaaaaa</e3>"
1000                    "<r>4</r>"
1000                    "<a></a>
1003                    "<a>s3</a>"
1004                    "<d>b6</d>"

例5-38 xml_parse_exprコンテンツ: リレーション出力

Timestamp   Tuple Kind  Tuple
1000:       +     <a>3</a>
1000:       +     <e3>blaaaaa</e3>
1000:       +     <r>4</r>
1000:       +     <a/>
1003:       +     <a>s3</a>
1004:       +     <d>b6</d>

xml_parse_exprドキュメントの例

例5-39の問合せtkdata62_q4例5-40の入力リレーションtkdata62_S1があるとします。リレーションkdata62_S1のスキーマは(c1 char(30))です。例5-41は、問合せで返されるリレーションを示します。

例5-39 xml_parse_exprドキュメント: 問合せ

<query id="tkdata62_q4"><![CDATA[ 
    select XMLPARSE(DOCUMENT c1) from tkdata62_S1
]]></query>

例5-40 xml_parse_exprドキュメント: リレーション入力

Timestamp               Tuple
1000                    "<a>3</a>"
1000                    "<e3>blaaaaa</e3>"
1000                    "<r>4</r>"
1000                    "<a></a>
1003                    "<a>s3</a>"
1004                    "<d>b6</d>"

例5-41 xml_parse_exprドキュメント: リレーション出力

Timestamp   Tuple Kind  Tuple
1000:       +     <a>3</a>
1000:       +     <e3>blaaaaa</e3>
1000:       +     <r>4</r>
1000:       +     <a/>
1003:       +     <a>s3</a>
1004:       +     <d>b6</d>

xml_parse_expr整形式の例

例5-42の問合せtkdata62_q2例5-43の入力リレーションtkdata62_Sがあるとします。リレーションtkdata62_Sのスキーマは(c char(30))です。例5-44は、問合せで返されるリレーションを示します。

例5-42 xml_parse_expr整形式: 問合せ

<query id="tkdata62_q2"><![CDATA[ 
    select XMLPARSE(DOCUMENT c WELLFORMED) from tkdata62_S
]]></query>

例5-43 xml_parse_expr整形式: リレーション入力

Timestamp               Tuple
1000                    "<a>3</a>"
1000                    "<e3>blaaaaa</e3>"
1000                    "<r>4</r>"
1000                    "<a/>"
1003                    "<a>s3</a>"
1004                    "<d>b6</d>"

例5-44 xml_parse_expr整形式: リレーション出力

Timestamp   Tuple Kind  Tuple
1000:       +           <a>3</a>
1000:       +           <e3>blaaaaa</e3>
1000:       +           <r>4</r>
1000:       +           <a/>
1003:       +           <a>s3</a>
1004:       +           <d>b6</d>