ヘッダーをスキップ
Oracle® CEP CQL 言語リファレンス
11g リリース 1 (11.1.1)
B55504-01
  目次
目次
索引
索引

戻る
戻る
 
次へ
次へ
 

11

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

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

2*2 

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

TO_CHAR(TRUNC(SYSDATE+7)) 

11.1 式の概要

Oracle CEP では、以下の式が提供されます。

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

Oracle CEP では Oracle CQL 文の一部で式の形式の一部が使用できない場合があります。Oracle CQL 文の式の制限の詳細については、第 16 章「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.gif を説明する関連テキスト

(arith_expr::=)

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

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

詳細については、第 6 章「関数 : 集約」を参照してください。

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

例 11-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_expr 集約式を使用します。distinct を使用して集約の組み込み関数を使用する場合は、aggr_distinct_exprを参照してください。

aggr_expr::=

aggr_expr.gif を説明する関連テキスト

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

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

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

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

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

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

例 11-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.gif を説明する関連テキスト

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

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

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

例 11-2arith_expr 式の使用方法を示します。

例 11-3 arith_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_list

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

arith_expr_list::=

arith_expr_list.gif を説明する関連テキスト

(arith_expr::=)

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

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

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

例 11-4 arith_expr_list

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

case_expr

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

case_expr::=

case_expr.gif を説明する関連テキスト

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

searched_case_list::=

searched_case_list.gif を説明する関連テキスト

(searched_case::=)

searched_case::=

searched_case.gif を説明する関連テキスト

(non_mt_cond_list::=arith_expr::=)

simple_case_list::=

simple_case_list.gif を説明する関連テキスト

(simple_case::=)

simple_case::=

simple_case.gif を説明する関連テキスト

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

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

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

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

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

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

case_expr with SELECT

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

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

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

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

例 11-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.gif を説明する関連テキスト

(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 文で使用できます。

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

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

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

例 11-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 組み込み関数またはユーザ定義関数を使用して関数呼び出しを定義するには、func_expr 関数式を使用します。

func_expr::=

func_expr.gif を説明する関連テキスト

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

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 関数の例」を参照してください。

XMLCONCAT

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

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

SQL/XML (SQLX)

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

Oracle CQL での SQLX のサポートの詳細については、以下を参照してください。

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

SQLX の詳細については、『Oracle Database SQL Language Reference』を参照してください。

FIRST と LAST

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

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

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

IDENTIFIER

個別の算術式を明示的に使用して、関数の識別子を指定できます。詳細については、aggr_distinct_expr を参照してください。

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

詳細については、節 1.1.9「関数」を参照してください。

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

func_expr PREV 関数の例

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

例 11-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 関数の例

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

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

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

例 11-17 SUM の func_expr

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

order_expr

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

order_expr::=

order_expr.gif を説明する関連テキスト

(attr::=const_int::=)

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

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

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

例 11-18 を示します。ストリーム S3 のスキーマは (c1 bigint, c2 interval, c3 byte(10), c4 float) です。この例は、クエリ q210 の結果を c1c2 の順でソートする方法と、クエリ q211 の結果を c2、インデックス 3 のストリーム要素 (c3)、インデックス 4 のストリーム要素 (c4) の順でソートする方法を示します。

例 11-18 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.gif を説明する関連テキスト

(arith_exprorder_by_clause::=)

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

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

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

例 11-19 のクエリ tkdata67_q1例 11-20 の入力リレーション tkdata67_S0 があるとします。リレーション tkdata67_S0 のスキーマは (c1 integer, c2 float) です。例 11-21 は、クエリで返されるリレーションを示します。

例 11-19 xml_agg_expr のクエリ

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

例 11-20 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

例 11-21 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.gif を説明する関連テキスト

(xml_attr_list::=)

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

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

詳細については、『Oracle Database SQL Language Reference』の「XMLCOLATTVAL」を参照してください。

例 11-19 のクエリ tkdata53_q1例 11-20 の入力リレーション tkdata53_S0 があるとします。リレーション tkdata53_S0 のスキーマは (c1 integer, c2 float) です。例 11-21 は、クエリで返されるリレーションを示します。

例 11-22 xmlcolattval_expr のクエリ

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

例 11-23 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

例 11-24 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.gif を説明する関連テキスト

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

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

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

詳細については、『Oracle Database SQL Language Reference』の「XMLELEMENT」を参照してください。

例 11-25 のクエリ tkdata51_q0例 11-26 の入力リレーション tkdata51_S0 があるとします。リレーション tkdata51_S0 のスキーマは (c1 integer, c2 float) です。例 11-27 は、クエリで返されるリレーションを示します。

例 11-25 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>

例 11-26 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

例 11-27 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.gif を説明する関連テキスト

(xml_attr_list::=)

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

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

詳細については、『Oracle Database SQL Language Reference』の「XMLFOREST」を参照してください。

例 11-28 のクエリ tkdata52_q0例 11-29 の入力リレーション tkdata52_S0 があるとします。リレーション tkdata52_S0 のスキーマは (c1 integer, c2 float) です。例 11-30 は、クエリで返されるリレーションを示します。

例 11-28 xmlforest_expr のクエリ

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

例 11-29 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

例 11-30 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.gif を説明する関連テキスト

(arith_expr::=)

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

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

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

詳細については、『Oracle Database SQL Language Reference』の「XMLPARSE」を参照してください。

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

xml_parse_expr コンテンツの例

例 11-31 のクエリ tkdata62_q3例 11-32 の入力リレーション tkdata62_S1 があるとします。リレーション tkdata62_S1 のスキーマは (c1 char(30)) です。例 11-33 はクエリで返されるリレーションを示します。

例 11-31 xml_parse_expr コンテンツ : クエリ

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

例 11-32 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>"

例 11-33 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 ドキュメントの例

例 11-34 のクエリ tkdata62_q4例 11-35 の入力リレーション tkdata62_S1 があるとします。リレーション tkdata62_S1 のスキーマは (c1 char(30)) です。例 11-36 は、クエリで返されるリレーションを示します。

例 11-34 xml_parse_expr ドキュメント : クエリ

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

例 11-35 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>"

例 11-36 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 整形式の例

例 11-37 のクエリ tkdata62_q2例 11-38 の入力リレーション tkdata62_S があるとします。リレーション tkdata62_S のスキーマは (c char(30)) です。例 11-39 は、クエリで返されるリレーションを示します。

例 11-37 xml_parse_expr 整形式 : クエリ

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

例 11-38 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>"

例 11-39 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>