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

前
前へ
次
次へ

8 組込みの単一行関数

この章では、Oracle Continuous Query Language (Oracle CQL)の単一行関数のリファレンスを提供します。単一行関数は、問い合せたストリームまたはビューのすべての行について単一行の結果を返します。

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

8.1 Oracle CQLの組込みの単一行関数の概要

表8-1は、Oracle CQLに用意されている組込みの単一行関数を示しています。

表8-1 Oracle CQLの組込みの単一行関数

関数

文字(文字値を返す)

文字(数値を返す)

日時

変換

XMLとSQLX

エンコードとデコード

Null関連

パターン一致

注意:

組込み関数名では大文字と小文字が区別されるため、表示されている方(小文字)を使用してください。

注意:

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

8.2 concat

構文

concat

目的

concatは、char2に連結されたchar1char[]として返すか、byte2に連結されたbyte1byte[]として返します。返されるcharは、char1と同じ文字セット内にあります。そのデータ型は、引数のデータ型によって決まります。

concatを使用すると、任意の組合せの文字、バイトおよび数値データ型を連結できます。concatでは、数値を文字列に自動変換します。

この関数は、連結演算子(||)に相当します。

xmltypeの引数を連結するには、xmlconcatを使用します。詳細は、「xmlconcat」を参照してください。

concat関数

「concat」に示す問合せchr_concatと、「concat」に示すデータ・ストリームS4があるとします。ストリームS4のスキーマは(c1 char(10))です。この問合せは、「concat」に示すリレーションを返します。

例8-1 concat関数の問合せ

<query id="chr_concat"><![CDATA[
select
concat(c1,c1),
concat("abc",c1),
concat(c1,"abc")
from
S4[range 5]
]]></query>

例8-2 concat関数のストリーム入力

Timestamp Tuple
1000
2000 hi
8000 hi1
9000
15000 xyz
h 200000000

例8-3 concat関数のリレーション出力

Timestamp Tuple Kind Tuple
1000: + ,abc,abc
2000: + hihi,abchi,hiabc
6000: - ,abc,abc
7000: - hihi,abchi,hiabc
8000: + hi1hi1,abchi1,hi1abc
9000: + ,abc,abc
13000: - hi1hi1,abchi1,hi1abc
14000: - ,abc,abc
15000: + xyzxyz,abcxyz,xyzabc
20000: - xyzxyz,abcxyz,xyzabc

連結演算子(||)

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

例8-4 連結演算子(||)の問合せ

<query id="q264">
select
c2 || "xyz"
from
S10
]]></query>

例8-5 連結演算子(||)のストリーム入力

Timestamp Tuple
1 1,abc
2 2,ab
3 3,abc
4 4,a
h 200000000

例8-6 連結演算子(||)のリレーション出力

Timestamp Tuple Kind Tuple
1: + abcxyz
2: + abxyz
3: + abcxyz
4: + axyz

8.3 hextoraw

構文

hex to raw

目的

hextorawは、char文字セット内の16進数を含むcharをRAW値に変換します。

関連項目:

rawtohex

問合せq6とデータ・ストリームSBytがあるとします。ストリームSBytのスキーマは(c1 integer, c2 char(10))です。この問合せはリレーションを返します。

<query id="q6"><![CDATA[ 
    select * from SByt[range 2] 
    where 
        hextoraw(c2) between and hextoraw("5600")
]]></query>
Timestamp   Tuple
1000        1,"51c1"
2000        2,"52"
3000        3,"53aa"
4000        4,"5"
5000         ,"55ef"
6000        6,
h 8000
h 200000000
Timestamp   Tuple Kind  Tuple
3000        +           3,"53aa"
5000        -           3,"53aa"
5000        +            ,"55ef"
7000        -            ,"55ef"

8.4 length

構文

length

目的

length関数は、char式またはbyte式の長さをintとして返します。lengthでは、入力文字セットで定義されている文字を使用して長さを計算します。

char式の場合は、すべての末尾の空白が長さに含まれます。式がnullの場合、この関数はnullを返します。

問合せchr_lenとデータ・ストリームS2があるとします。ストリームS2のスキーマは(c1 char(10), c2 integer)です。この問合せはリレーションを返します。

<query id="chr_len"><![CDATA[ 
    select length(c1) from S2[range 5]
]]></query>
Timestamp   Tuple
 1000
 2000       hi
 8000       hi1
 9000
15000       xyz
h 200000000
Timestamp   Tuple Kind  Tuple
 1000:      +           0
 2000:      +           2
 6000:      -           0
 7000:      -           2
 8000:      +           3
 9000:      +           0
13000:      -           3
14000:      -           0
15000:      +           3
20000:      -           3

8.5 lk

構文

lk

目的

char1が正規表現char2に一致する場合、lkはブール値trueを返します。それ以外の場合は、falseを返します。

この関数は、LIKE条件に相当します。詳細は、次の項を参照してください。

問合せq291とデータ・ストリームSLk1があるとします。ストリームSLk1のスキーマは(first1 char(20), last1 char(20))です。この問合せはリレーションを返します。

<query id="q291"><![CDATA[ 
    select * from SLk1 
    where 
        lk(first1,"^Ste(v|ph)en$") = true
]]></query>
Timestamp   Tuple
1           Steven,King
2           Sten,Harley
3           Stephen,Stiles
4           Steven,Markles
h 200000000
Timestamp   Tuple Kind  Tuple
1:          +           Steven,King
3:          +           Stephen,Stiles
4:          +           Steven,Markles

8.6 nvl

構文

nvl

目的

nvlを使用すると、空白として返されるnullを問合せの結果内の文字列に置き換えることができます。expr1がnullの場合、NVLexpr2を返します。expr1がnullでない場合、NVLexpr1を返します。

引数expr1およびexpr2は任意のデータ型にすることができます。これらのデータ型が異なる場合、Oracle Event Processingでは一方の型をもう一方に暗黙的に変換します。暗黙的な変換を行うことができない場合、Oracle Event Processingはエラーを返します。暗黙的な変換は、次のように実行されます。

  • expr1が文字データの場合、Oracle Event Processingではexpr2を文字データに変換してから比較を行い、expr1の文字セット内のVARCHAR2を返します。

  • expr1が数値の場合、Oracle Event Processingによって数値の優先度の最も高い引数が判定され、もう一方の引数がこのデータ型に暗黙的に変換されて、そのデータ型が戻されます。

問合せq281とデータ・ストリームSNVLがあるとします。ストリームSNVLのスキーマは(c1 char(20), c2 integer)です。この問合せはリレーションを返します。

<query id="q281"><![CDATA[ 
    select nvl(c1,"abcd") from SNVL
]]></query>
Timestamp   Tuple
1              ,1
2            ab,2
3           abc,3
4              ,4
h 200000000
Timestamp   Tuple Kind  Tuple
1:          +           abcd
2:          +           ab
3:          +           abc
4:          +           abcd

8.7 prev

構文

prev

目的

prevは、現在のイベントが属するパーティション内にある、現在のイベントの前に発生したイベントのストリーム属性(関数の引数identifier2)の値を返します。該当する前のイベントがない場合は、NULLと評価されます。

指定されるストリーム要素の型は、次のいずれかになります。

  • integer

  • bigint

  • float

  • double

  • byte

  • char

  • interval

  • timestamp

この関数の戻り値の型は、指定されたストリーム属性の型によって異なります(関数の引数identifier2)。

説明:

  • identifier1.identifier2: identifier1PATTERN句で使用されDEFINE句で定義される相関変数の名前で、identifier2prevによって前のイベントの値が返されるストリーム属性の名前です。

  • const_int1: この引数の値がnの場合、現在のイベントが属するパーティション内のn個前のイベントを指定します。このようなイベントが存在する場合、n個前のイベントの属性値(引数identifier2で指定される)が返され、それ以外の場合はNULLが返されます。

  • const_bigint: 時間範囲をナノ秒で指定し、現在のイベントより前の特定の時間範囲以内に発生した以前のイベントのみを探す場合に使用します。

問合せでPARTITION BYprev関数と使用され、入力データに多数の異なるパーティション・キー値(つまり多数のパーティション)が含まれる場合、パーティションごとに以前のイベントを格納するために消費される合計メモリーは大きくなる可能性があります。そのような場合は、時間範囲(3番目の引数で、できるかぎり大きな範囲値を指定)を使用して、このメモリーを可能なかぎり再利用できるようにします。

prev(identifier1.identifier2)

問合せq2とデータ・ストリームS1があるとします。ストリームS1のスキーマは(c1 integer)です。この例では、パターンAA.c1 = prev(A.c1)と定義します。つまり、現在のストリーム要素のc1の値が現在のストリーム要素の直前にあるストリーム要素のc1の値と一致する場合に、パターンAが一致します。この問合せはストリームを返します。

<query id="q2"><![CDATA[ 
    select 
        T.Ac1,
        T.Cc1 
    from 
        S1 
    MATCH_RECOGNIZE ( 
        MEASURES 
            A.c1 as Ac1, 
            C.c1 as Cc1 
        PATTERN(A B+ C) 
        DEFINE 
            A as A.c1 = prev(A.c1), 
            B as B.c1 = 10, 
            C as C.c1 = 7
    ) as T
]]></query>
Timestamp   Tuple
1000        35
3000        35
4000        10
5000         7
Timestamp   Tuple Kind  Tuple
5000:       +           35,7

prev(identifier1.identifier2, const_int)

問合せq35とデータ・ストリームS15があるとします。ストリームS15のスキーマは(c1 integer, c2 integer)です。この例では、パターンAA.c1 = prev(A.c1,3)と定義します。つまり、現在のストリーム要素のc1の値が現在のストリーム要素の3つ前にあるストリーム要素のc1の値と一致する場合に、パターンAが一致します。この問合せはストリームを返します。

<query id="q35"><![CDATA[ 
    select T.Ac1 from S15 
    MATCH_RECOGNIZE ( 
        MEASURES 
            A.c1 as Ac1 
        PATTERN(A) 
        DEFINE 
            A as (A.c1 = prev(A.c1,3) )
    ) as T
]]></query>
Timestamp   Tuple
 1000       45,20
 2000       45,30
 3000       45,30
 4000       45,30
 5000       45,30
 6000       45,20
 7000       45,20
 8000       45,20
 9000       43,40
10000       52,10
11000       52,30
12000       43,40
13000       52,50
14000       43,40
15000       43,40
Timestamp   Tuple Kind  Tuple
 4000:       +          45
 5000:       +          45
 6000:       +          45
 7000:       +          45
 8000:       +          45
12000:       +          43
13000:       +          52
15000:       +          43

prev(identifier1.identifier2, const_int, const_bigint)

問合せq36とデータ・ストリームS15があるとします。ストリームS15のスキーマは(c1 integer, c2 integer)です。この例では、パターンAA.c1 = prev(A.c1,3,5000000000L)と定義します。つまり、次の場合にパターンAが一致します。

  • 現在のイベントのc1の値が、現在のイベントが属するパーティション内の3つ前のイベントのc1の値と一致する場合、および

  • 現在のイベントのタイムスタンプと3つ前のイベントのタイムスタンプの差が、5000000000Lナノ秒以下である場合。

この問合せは出力ストリームを返します。出力ストリームには、8000での出力はありません。次の例は、パーティション(c2属性の値によるパーティション化)の内容を示します。8000のイベントはここに含まれています。

Timestamp   Tuple
1000        45,20
6000        45,20
7000        45,20
8000        45,20

次の例に示すように、3つ前のイベント(1000でのイベント)のc1の値が現在のイベント(8000でのイベント)のc1の値と等しくても、範囲条件は満たされません。これら2つのイベントのタイムスタンプの差が5000000000ナノ秒を超えているためです。前のタプルは存在しないものとして処理され、prevNULLを返すため、条件は一致しません。

<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,5000000000L) )
    ) as T
]]></query>
Timestamp   Tuple
 1000       45,20
 2000       45,30
 3000       45,30
 4000       45,30
 5000       45,30
 6000       45,20
 7000       45,20
 8000       45,20
 9000       43,40
10000       52,10
11000       52,30
12000       43,40
13000       52,50
14000       43,40
15000       43,40
Timestamp   Tuple Kind  Tuple
5000:       +           45

8.8 rawtohex

構文

raw to hex

目的

rawtohexは、RAW値を含むbytechar文字セット内の16進数に変換します。

関連項目:

hextoraw

問合せbyte_to_hexとデータ・ストリームS5があるとします。ストリームS5のスキーマは(c1 integer, c2 byte(10))です。この問合せでは、rawtohex関数を使用して、10バイトのRAW値を、現在のロケールの文字セット内にある同等の10個の16進数に変換します。この問合せはリレーションを返します。

<query id="byte_to_hex"><![CDATA[ 
    select rawtohex(c2) from S5[range 4]
]]></query>
Timestamp   Tuple
1000        1,"51c1"
2000        2,"52"
2500        7,"axc"
3000        3,"53aa"
4000        4,"5"
5000         ,"55ef"
6000        6,
h 8000
h 200000000
Timestamp   Tuple Kind  Tuple
 1000:      +           51c1
 2000:      +           52
 3000:      +           53aa
 4000:      +           05
 5000:      -           51c1
 5000:      +           55ef
 6000:      -           52
 6000:      +
 7000:      -           53aa
 8000:      -           05
 9000:      -           55ef
10000:      -

8.9 systimestamp

構文

systimestamp

目的

systimestampは、Oracle Event Processingサーバーが存在するシステムのシステム日付(小数で表す秒数とタイムゾーンを含む)を返します。戻り値の型は、TIMESTAMP WITH TIME ZONEです。

問合せq106とデータ・ストリームS0があるとします。ストリームS0のスキーマは(c1 float, c2 integer)です。この問合せはリレーションを返します。

<query id="q106"><![CDATA[ 
    select * from S0 
    where 
        case c2 
            when 10 then null 
            when 20 then null 
            else systimestamp() 
        end > "07/06/2007 14:13:33"
]]></query>
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
Timestamp   Tuple Kind  Tuple
     1002:  +           0.14,15
   400000:  +           0.3 ,30
   500000:  +           0.3 ,35
   600000:  +               ,35
100000000:  +           4.04,40

8.10 to_bigint

構文

to big int

目的

入出力の型

この関数の入出力の型は次のとおりです。

入力の型 出力の型

INTEGER

BIGINT

TIMESTAMP

BIGINT

CHAR

BIGINT

問合せq282とデータ・ストリームS11があるとします。ストリームS11のスキーマは(c1 integer, name char(10))です。この問合せはリレーションを返します。

<query id="q282"><![CDATA[ 
    select nvl(to_bigint(c1), 5.2) from S11
]]></query>
Timestamp   Tuple
  10        1,abc
2000         ,ab
3400        3,abc
4700         ,a
h 8000
h 200000000
Timestamp   Tuple Kind  Tuple
  10:       +           1
2000:       +           5.2
3400:       +           3
4700:       +           5.2

8.11 to_boolean

構文

to boolean

目的

to_booleanは、bigint式またはinteger式の引数に対して値trueまたはfalseを返します。

問合せq282とデータ・ストリームS11があるとします。ストリームS11のスキーマは(c1 integer, name char(10))です。この問合せはリレーションを返します。

<view id="v2" schema="c1 c2" ><![CDATA[
    select to_boolean(c1), c1 from tkboolean_S3 [now] where c2 = 0.1
]]></view><query id="q1"><![CDATA[ 
    select * from v2
]]></query>
Timestamp   Tuple
1000        -2147483648, 0.1
2000        2147483647, 0.2
3000        12345678901, 0.3
4000        -12345678901, 0.1
5000        9223372036854775799, 0.2
6000        -9223372036854775799, 0.3
7000        , 0.1
8000        10000000000, 0.2
9000        60000000000, 0.3
h 200000000
Timestamp   Tuple Kind  Tuple
1000      +           true,-2147483648
1000      -           true,-2147483648
4000      +           true,-12345678901
4000      -           true,-12345678901
7000      +           ,
7000      -           ,

8.12 to_char

構文

to char

目的

to_charは、integerdoublebigintfloattimestampまたはinterval式の引数に対してcharの値を返します。bigintの引数がcharの精度を超える場合、Oracle Event Processingはエラーを返します。

問合せq282とデータ・ストリームS11があるとします。ストリームS11のスキーマは(c1 integer, name char(10))です。この問合せはリレーションを返します。

<query id="q1"><![CDATA[ 
    select to_char(c1), to_char(c2), to_char(c3), to_char(c4), to_char(c5), to_char(c6) 
    from S1
]]></query>
Timestamp   Tuple
1000        99,99999, 99.9, 99.9999, "4 1:13:48.10", "08/07/2004 11:13:48", cep
Timestamp   Tuple Kind  Tuple
1000:       +           99,99999,99.9,99.9999,4 1:13:48.10,08/07/2004 11:13:48

8.13 to_double

構文

to double

目的

to_doubleは、bigintintegerまたはfloat式の引数に対してdoubleの値を返します。bigintの引数がdoubleの精度を超える場合、Oracle Event Processingはエラーを返します。

問合せq282とデータ・ストリームS11があるとします。ストリームS11のスキーマは(c1 integer, name char(10))です。この問合せはリレーションを返します。

<query id="q282"><![CDATA[ 
    select nvl(to_double(c1), 5.2) from S11
]]></query>
Timestamp   Tuple
  10        1,abc
2000         ,ab
3400        3,abc
4700         ,a
h 8000
h 200000000
Timestamp   Tuple Kind  Tuple
  10:       +           1
2000:       +           5.2
3400:       +           3
4700:       +           5.2

8.14 to_float

構文

to float

目的

to_floatは、bigintまたはintegerの引数と同等のfloatの数値を返します。bigintの引数がfloatの精度を超える場合、Oracle Event Processingはエラーを返します。

問合せq1とデータ・ストリームS11があるとします。ストリームS1のスキーマは(c1 integer, name char(10))です。この問合せはリレーションを返します。

<query id="q1"><![CDATA[ 
    select nvl(to_float(c1), 5.2) from S11
]]></query>
Timestamp   Tuple
  10        1, abc
2000         , ab
3400        3, abc
4700         , a
h 8000
h 200000000
Timestamp   Tuple Kind  Tuple
10:+ 1.02000:+ 5.23400:+ 3.04700:+ 5.2

8.15 to_timestamp

構文

to timestamp

目的

to_timestampは、java.text.SimpleDateFormatの書式モデルに準拠しているcharリテラルをtimestampデータ型に変換します。to_timestamp関数には次の2つの形式があり、引数の数で区別されます。

  • char: この形式のto_timestamp関数では、デフォルトのjava.text.SimpleDateFormatの書式モデル(MM/dd/yyyy HH:mm:ss)に準拠しているcharリテラルを含む1つのcharの引数を、対応するtimestampデータ型に変換します。

  • char1, char2: この形式のto_timestamp関数では、2番目のchar2の引数で指定されたjava.text.SimpleDateFormatの書式モデルに準拠しているcharリテラルを含むchar1の引数を、対応するtimestampデータ型に変換します。

  • long: この形式のto_timestamp関数では、January 1, 1970, 00:00:00 GMTなど、"Epoch"(エポック)と呼ばれる標準の基本時間以降のナノ秒を示す1つのlong引数を、デフォルトのjava.text.SimpleDateFormatの書式モデル(MM/dd/yyyy HH:mm:ss)に準拠している日付書式で、"Epoch"(エポック)以降のミリ秒として表現される対応するtimestampデータ型に変換します。

問合せq277とデータ・ストリームSTs2があるとします。ストリームSTs2のスキーマは(c1 integer, c2 char(20))です。この問合せはリレーションを返します。

<query id="q277"><![CDATA[ 
    select * from STs2 
    where 
        to_timestamp(c2,"yyMMddHHmmss") = to_timestamp("09/07/2005 10:13:48")
]]></query>
Timestamp   Tuple
1           1,"040807111348"
2           2,"050907101348"
3           3,"041007111348"
4           4,"060806111248"
h 200000000
Timestamp   Tuple Kind  Tuple
2:          +           2,050907101348

8.16 xmlcomment

構文

xml comment

目的

xmlcommentは、二重引用符で区切られた定数Stringの引数をxmltypeとして返します。

xmlcommentを使用すると、整形式のXMLコメントを問合せ結果に追加できます。

この関数は、次の引数をとります。

  • quoted_string_double_quotes: 二重引用符で区切られたString定数。

この関数の戻り値の型はxmltypeです。正確なスキーマはXMLデータの入力ストリームのスキーマによって異なります。

問合せtkdata64_q1とデータ・ストリームtkdata64_Sがあるとします。ストリームtkdata64_Sのスキーマは(c1 char(30))です。この問合せはリレーションを返します。

<query id="tkdata64_q1"><![CDATA[ 
    select xmlconcat(xmlelement("parent", c1), xmlcomment("this is a comment")) 
from tkdata64_S
]]></query>
Timestamp   Tuple
c 30
1000        "san jose"
1000        "mountain view"
1000
1000        "sunnyvale"
1003
1004        "belmont"
Timestamp   Tuple Kind  Tuple
1000:       +           <parent>san jose</parent>
                        <!--this is a comment-->
1000:       +           <parent>mountain view</parent>
                        <!--this is a comment-->
1000:       +           <parent/>
                        <!--this is a comment-->
1000:       +           <parent>sunnyvale</parent>
                        <!--this is a comment-->
1003:       +           <parent/>
                        <!--this is a comment-->
1004:       +           <parent>belmont</parent>
                        <!--this is a comment-->

8.17 xmlconcat

構文

xml concat

目的

xmlconcatは、カンマで区切られたxmltypeの引数の連結をxmltypeとして返します。

xmlconcatを使用すると、任意の組合せのxmltypeの引数を連結できます。

この関数は、次の引数をとります。

  • non_mt_arg_list: カンマで区切られたxmltypeの引数のリスト。詳細は、次の項を参照してください。

この関数の戻り値の型はxmltypeです。正確なスキーマはXMLデータの入力ストリームのスキーマによって異なります。

この関数は、SQLXのストリームを処理する場合に特に役立ちます。詳細は、次の項を参照してください。

xmltype以外のデータ型を連結するには、CONCATを使用します。詳細は、「concat」を参照してください。

問合せtkdata64_q1とデータ・ストリームtkdata64_Sがあるとします。ストリームtkdata64_Sのスキーマは(c1 char(30))です。この問合せはリレーションを返します。

<query id="tkdata64_q1"><![CDATA[ 
    select 
        xmlconcat(xmlelement("parent", c1), xmlcomment("this is a comment")) 
    from tkdata64_S
]]></query>
Timestamp   Tuple
c 30
1000        "san jose"
1000        "mountain view"
1000
1000        "sunnyvale"
1003
1004        "belmont"
Timestamp   Tuple Kind  Tuple
1000:       +           <parent>san jose</parent>
                        <!--this is a comment-->
1000:       +           <parent>mountain view</parent>
                        <!--this is a comment-->
1000:       +           <parent/>
                        <!--this is a comment-->
1000:       +           <parent>sunnyvale</parent>
                        <!--this is a comment-->
1003:       +           <parent/>
                        <!--this is a comment-->
1004:       +           <parent>belmont</parent>
                        <!--this is a comment-->

8.18 xmlexists

構文

xml exists

目的

xmlexistsは、XMLデータのストリームに対する連続した問合せを作成します。この問合せでは、指定したXQueryをXMLデータが満たすかどうかを示すbooleanを返します。

この関数は、次の引数をとります。

  • const_string: xqryargs_listでバインドするXMLストリーム要素のデータにOracle Event Processingが適用するXQuery。詳細は、次の項を参照してください。

  • xqryargs_list: ストリーム要素とXQuery変数またはXPath演算子との間の1つまたは複数のバインディングのリスト。詳細は、次の項を参照してください。

この関数の戻り値の型はbooleanです。XQueryを満たす場合はtrue、それ以外の場合はfalseです。

この関数は、SQLXのストリームを処理する場合に特に役立ちます。詳細は、次の項を参照してください。

関連項目:

問合せq1とXMLデータ・ストリームSがあるとします。ストリームSのスキーマは(c1 integer, c2 xmltype)です。この例では、ストリーム要素c2の値が現在のノード(".")にバインドされ、ストリーム要素c1 + 1の値がXQuery変数xにバインドされます。この問合せはリレーションを返します。

<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 
        S
]]></query>
Timestamp   Tuple
3           1, "<PDRecord><PDName>hello</PDName></PDRecord>"
4           2, "<PDRecord><PDName>hello</PDName><PDName>hello1</PDName></PDRecord>"
5           3, "<PDRecord><PDId>4</PDId><PDName>hello1</PDName></PDRecord>"
6           4, "<PDRecord><PDId>46</PDId><PDName>hello2</PDName></PDRecord>"
Timestamp   Tuple Kind  Tuple
3:          +           false
4:          +           false
5:          +           true
6:          +           false

8.19 xmlquery

構文

xml query

目的

xmlqueryは、XMLデータのストリームに対する連続した問合せを作成します。この問合せでは、指定したXQueryを満たすXMLデータを返します。

この関数は、次の引数をとります。

  • const_string: xqryargs_listでバインドするXMLストリーム要素のデータにOracle Event Processingが適用するXQuery。詳細は、次の項を参照してください。

  • xqryargs_list: ストリーム要素とXQuery変数またはXPath演算子との間の1つまたは複数のバインディングのリスト。詳細は、次の項を参照してください。

この関数の戻り値の型はxmltypeです。正確なスキーマはXMLデータの入力ストリームのスキーマによって異なります。

この関数は、SQLXのストリームを処理する場合に特に役立ちます。詳細は、次の項を参照してください。

関連項目:

問合せとXMLデータ・ストリームSがあるとします。ストリームSのスキーマは(c1 integer, c2 xmltype)です。この例では、ストリーム要素c2の値が現在のノード(".")にバインドされ、ストリーム要素c1 + 1の値がXQuery変数xにバインドされます。この問合せはリレーションを返します。

<query id="q1"><![CDATA[ 
    SELECT 
        xmlquery(
            "for $i in /PDRecord where $i/PDId <= $x return $i/PDName" 
            PASSING BY VALUE  
                c2 as ".", 
               (c1+1) AS "x" 
            RETURNING CONTENT
        ) XMLData 
    FROM 
        S
]]></query>
Timestamp   Tuple
3           1, "<PDRecord><PDName>hello</PDName></PDRecord>"
4           2, "<PDRecord><PDName>hello</PDName><PDName>hello1</PDName></PDRecord>"
5           3, "<PDRecord><PDId>4</PDId><PDName>hello1</PDName></PDRecord>"
6           4, "<PDRecord><PDId>46</PDId><PDName>hello0</PDName></PDRecord>"
7           5, "<PDRecord><PDId>5</PDId><PDName>hello2</PDName></PDRecord>"
Timestamp   Tuple Kind  Tuple
3:          +
4:          +
5:          +           "<PDName>hello1</PDName>"
6:     +
7:          +           "<PDName>hello2</PDName>"