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

戻る
戻る
 
次へ
次へ
 

5 関数 : 単一行

単一行関数は、照会されるストリームまたはビューのすべての行について単一の結果行を返します。

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

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

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

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

関数

文字 (文字値を返す)


文字 (数値を返す)


日時


変換


XML と SQLX


エンコードとデコード


Null 関連


パターン マッチング




注意 :

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

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


CONCAT

構文

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

目的

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

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

この関数は、連結演算子 (||) に相当します。詳細については、「連結演算子」を参照してください。

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

CONCAT 関数

例 5-1 のクエリ chr_concat例 5-2 のデータ ストリーム S4 があるとします。ストリーム S4 にはスキーマ (c1 char(10)) があります。このクエリは、例 5-3 に示すリレーションを返します。

例 5-1 CONCAT 関数のクエリ

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

例 5-2 CONCAT 関数のストリーム入力

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

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

連結演算子 (||)

例 5-4 のクエリ q264例 5-5 のデータ ストリーム S10 があるとします。ストリーム S10 にはスキーマ (c1 integer, c2 char(10)) があります。このクエリは、例 5-6 に示すリレーションを返します。

例 5-4 連結演算子 (||) のクエリ

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

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

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

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

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

HEXTORAW

構文

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

目的

HEXTORAW は、CHAR 文字セット内の 16 進数を含む char を未加工値に変換します。


関連項目 :

「RAWTOHEX」

例 5-7 のクエリ q6例 5-8 のデータ ストリーム SinpByte1 があるとします。ストリーム SinpByte1 にはスキーマ (c1 byte(10), c2 integer) があります。このクエリは、例 5-9 に示すリレーションを返します。

例 5-7 HEXTORAW 関数のクエリ

<query id="q6"><![CDATA[ 
    select * from SByt[range 2] 
    where 
        bytTest(c2) between hextoraw("5200") and hextoraw("5600")
]]></query>

例 5-8 HEXTORAW 関数のストリーム入力

Timestamp   Tuple
1000        1,"51c1"
2000        2,"52"
3000        3,"53aa"
4000        4,"5"
5000         ,"55ef"
6000        6,
h 8000
h 200000000

例 5-9 HEXTORAW 関数のリレーション出力

Timestamp   Tuple Kind  Tuple
2000        +           2,"52"
3000        +           3,"53aa"
4000        -           2,"52"
5000        -           3,"53aa"
5000        +            ,"55ef"
7000        -            ,"55ef"

LENGTH

構文

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

目的

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

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

例 5-10 のクエリ chr_len例 5-11 のデータ ストリーム S2 があるとします。ストリーム S2 のスキーマは (c1 integer, c2 integer) です。このクエリは、例 5-12 に示すリレーションを返します。

例 5-10 LENGTH 関数のクエリ

<query id="chr_len"><![CDATA[ 
    select length(c1) from S4[range 5]
]]></query>

例 5-11 LENGTH 関数のストリーム入力

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

例 5-12 LENGTH 関数のリレーション出力

Timestamp   Tuple Kind  Tuple
 1000:      +           0
 2000:      +           2
 6000:      -           0
 7000:      -           2
 8000:      +           3
 9000:      +           0
13000:      -           3
14000:      -           0
15000:      +           3
20000:      -           3

LK

構文

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

目的

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

この関数は、LIKE 条件に相当します。詳細については、節 12.4「LIKE 条件」を参照してください。

例 5-13 のクエリ q291例 5-14 のデータ ストリーム SLk1 があるとします。ストリーム SLk1 にはスキーマ (first1 char(20), last1 char(20)) があります。このクエリは、例 5-15 に示すリレーションを返します。

例 5-13 LK 関数のクエリ

<query id="q291"><![CDATA[ 
    select * from SLk1 
    where 
        LK(first1,"^Ste(v|ph)en$")
]]></query>

例 5-14 LK 関数のストリーム入力

Timestamp   Tuple
1           Steven,King
2           Sten,Harley
3           Stephen,Stiles
4           Steven,Markles
h 200000000

例 5-15 LK 関数のリレーション出力

Timestamp   Tuple Kind  Tuple
1:          +           Steven,King
3:          +           Stephen,Stiles
4:          +           Steven,Markles

NVL

構文

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

目的

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

引数 expr1expr2 は任意のデータ型にすることができます。この 2 つのデータ型が異なる場合、Oracle CEP では一方の型をもう一方に合わせるように暗黙的に変換します。暗黙的な変換を行うことができない場合、Oracle CEP はエラーを返します。この暗黙的な変換は次のように実装されます。

例 5-16 のクエリ q281例 5-17 のデータ ストリーム SNVL があるとします。ストリーム SNVL にはスキーマ (c1 char(20), c2 integer) があります。このクエリは、例 5-18 に示すリレーションを返します。

例 5-16 NVL 関数のクエリ

<query id="q281"><![CDATA[ 
    select nvl(c1,"abcd") from SNVL
]]></query>

例 5-17 NVL 関数のストリーム入力

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

例 5-18 NVL 関数のリレーション出力

Timestamp   Tuple Kind  Tuple
1:          +           abcd
2:          +           ab
3:          +           abc
4:          +           abcd

PREV

構文

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

目的

PREV は、指定されたパターンに一致する前の指定されたストリーム要素の値を返します。

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

この関数の戻り値の型は、指定されたストリーム要素の型によって異なります。

この関数は次の引数を使用します。

各項目は次のとおりです。

PREV(identifier1.identifier2)

例 5-19 のクエリ q2例 5-20 のデータ ストリーム S1 があるとします。ストリーム S1 にはスキーマ (c1 integer) があります。この例では、パターン AA.c1 = prev(A.c1) と定義します。つまり、現在のストリーム要素の c1 の値が現在のストリーム要素の直前にあるストリーム要素の c1 の値と一致する場合に、パターン A が一致します。このクエリは、例 5-21 に示すリレーションを返します。

例 5-19 PREV(identifier1.identifier2) 関数のクエリ

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

例 5-20 PREV(identifier1.identifier2) 関数のストリーム入力

Timestamp   Tuple
1000        35
3000        35
4000        10
5000         7

例 5-21 PREV(identifier1.identifier2) 関数のリレーション出力

Timestamp   Tuple Kind  Tuple
5000:       +           35,7

PREV(identifier1.identifier2, const_int1)

例 5-22 のクエリ q35例 5-23 のデータ ストリーム S15 があるとします。ストリーム S15 にはスキーマ (c1 integer, c2 integer) があります。この例では、パターン AA.c1 = PREV(A.c1,3) と定義します。つまり、現在のストリーム要素の c1 の値が現在のストリーム要素の 3 つ前にあるストリーム要素の c1 の値と一致する場合に、パターン A が一致します。このクエリは、例 5-24 に示すリレーションを返します。

例 5-22 PREV(identifier1.identifier2, const_int1) 関数のクエリ

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

例 5-23 PREV(identifier1.identifier2, const_int1) 関数のストリーム入力

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

例 5-24 PREV(identifier1.identifier2, const_int1) 関数のリレーション出力

Timestamp   Tuple Kind  Tuple
 3000:       +          45
 4000:       +          45
 5000:       +          45
 6000:       +          45
 7000:       +          45
 8000:       +          45
13000:       +          52
15000:       +          43

PREV(identifier1.identifier2, const_int1, const_int2)

例 5-25 のクエリ q36例 5-23 のデータ ストリーム S15 があるとします。ストリーム S15 にはスキーマ (c1 integer, c2 integer) があります。この例では、パターン AA.c1 = PREV(A.c1,3,5000) と定義します。つまり、現在のストリーム要素の c1 の値が現在のストリーム要素の 3 つ前にある (タイムスタンプが 5000 の) ストリーム要素の c1 の値と一致する場合に、パターン A が一致します。このクエリは、例 5-24 に示すリレーションを返します。

例 5-25 は、PREV 関数を使用して、前にある (特定のタイムスタンプを持つ) 特定のストリーム要素に対する比較を行う方法を示しています。

例 5-25 PREV(identifier1.identifier2, const_int1, const_int2) 関数のクエリ

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

例 5-26 PREV(identifier1.identifier2, const_int1, const_int2) 関数のストリーム入力

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

例 5-27 PREV(identifier1.identifier2, const_int1, const_int2) 関数のリレーション出力

Timestamp   Tuple Kind  Tuple
5000:       +           45

RAWTOHEX

構文

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

目的

RAWTOHEX は、未加工値を含む byteCHAR 文字セット内の 16 進数に変換します。


関連項目 :

「HEXTORAW」

例 5-28 のクエリ byte_to_hex例 5-29 のデータ ストリーム S5 があるとします。ストリーム S5 にはスキーマ (c1 integer, c2 byte(10)) があります。このクエリでは、RAWTOHEX 関数を使用して、10 バイトの未加工値を、現在のロケールの文字セット内にある同等の 10 個の 16 進数に変換します。このクエリは、例 5-30 に示すリレーションを返します。

例 5-28 RAWTOHEX 関数のクエリ

<query id="byte_to_hex"><![CDATA[ 
    select rawtohex(c2) from S5[range 4]
]]></query>

例 5-29 RAWTOHEX 関数のストリーム入力

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

例 5-30 RAWTOHEX 関数のリレーション出力

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

SYSTIMESTAMP

構文

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

目的

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

例 5-31 のクエリ q106例 5-32 のデータ ストリーム S0 があるとします。ストリーム S0 にはスキーマ (c1 float, c2 integer) があります。このクエリは、例 5-33 に示すリレーションを返します。case の詳細については、case_exprを参照してください。

例 5-31 SYSTIMESTAMP 関数のクエリ

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

例 5-32 SYSTIMESTAMP 関数のストリーム入力

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-33 SYSTIMESTAMP 関数のリレーション出力

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

TO_BIGINT

構文

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

目的

TO_BIGINT は、integer の引数と同等の bigint の数値を返します。

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

例 5-34 のクエリ q282例 5-35 のデータ ストリーム S11 があるとします。ストリーム S11 にはスキーマ (c1 integer, name char(10)) があります。このクエリは、例 5-36 に示すリレーションを返します。

例 5-34 TO_BIGINT 関数のクエリ

<query id="q282"><![CDATA[ 
    select nvl(to_bigint(c1), 5.2) from S11
]]></query>

例 5-35 TO_BIGINT 関数のストリーム入力

Timestamp   Tuple
  10        1,abc
2000         ,ab
3400        3,abc
4700         ,a
h 8000
h 200000000

例 5-36 TO_BIGINT 関数のリレーション出力

Timestamp   Tuple Kind  Tuple
  10:       +           1
2000:       +           5.2
3400:       +           3
4700:       +           5.2

TO_BOOLEAN

構文

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

目的

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

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

例 5-34 のクエリ q282例 5-35 のデータ ストリーム S11 があるとします。ストリーム S11 にはスキーマ (c1 integer, name char(10)) があります。このクエリは、例 5-36 に示すリレーションを返します。

例 5-37 TO_BOOLEAN 関数のクエリ

<view id="v2" schema="c1 boolean, c2 bigint" ><![CDATA[
    select to_boolean(c1), c1 from tkboolean_S3 [now] where c2 = 0.1
]]></view><query id="q1"><![CDATA[ 
    select * from v2
]]></query>

例 5-38 TO_BOOLEAN 関数のストリーム入力

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

例 5-39 TO_BOOLEAN 関数のリレーション出力

Timestamp   Tuple Kind  Tuple
1000      +           true,-2147483648
1000      -           true,-2147483648
4000      +           true,-12345678901
4000      -           true,-12345678901
7000      +           ,
7000      -           ,

TO_CHAR

構文

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

目的

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

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

例 5-34 のクエリ q282例 5-35 のデータ ストリーム S11 があるとします。ストリーム S11 にはスキーマ (c1 integer, name char(10)) があります。このクエリは、例 5-36 に示すリレーションを返します。

例 5-40 TO_CHAR 関数のクエリ

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

例 5-41 TO_CHAR 関数のストリーム入力

Timestamp   Tuple
1000        99,99999, 99.9, 99.9999, "4 1:13:48.10", "08/07/2004 11:13:48", cep

例 5-42 TO_CHAR 関数のリレーション出力

Timestamp   Tuple Kind  Tuple
1000:       +           99,99999,99.9,99.9999,4 1:13:48.10,08/07/2004 11:13:48

TO_DOUBLE

構文

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

目的

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

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

例 5-34 のクエリ q282例 5-35 のデータ ストリーム S11 があるとします。ストリーム S11 にはスキーマ (c1 integer, name char(10)) があります。このクエリは、例 5-36 に示すリレーションを返します。

例 5-43 TO_DOUBLE 関数のクエリ

<query id="q282"><![CDATA[ 
    select nvl(to_float(c1), 5.2) from S11
]]></query>

例 5-44 TO_DOUBLE 関数のストリーム入力

Timestamp   Tuple
  10        1,abc
2000         ,ab
3400        3,abc
4700         ,a
h 8000
h 200000000

例 5-45 TO_DOUBLE 関数のリレーション出力

Timestamp   Tuple Kind  Tuple
  10:       +           1
2000:       +           5.2
3400:       +           3
4700:       +           5.2

TO_FLOAT

構文

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

目的

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

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

例 5-46 のクエリ q1例 5-47 のデータ ストリーム S11 があるとします。ストリーム S1 にはスキーマ (c1 integer, name char(10)) があります。このクエリは、例 5-48 に示すリレーションを返します。

例 5-46 TO_FLOAT 関数のクエリ

<query id="q1"><![CDATA[ 
    select nvl(to_float(c1), 5.2) from S11
]]></query>

例 5-47 TO_FLOAT 関数のストリーム入力

Timestamp   Tuple
  10        1, abc
2000         , ab
3400        3, abc
4700         , a
h 8000
h 200000000

例 5-48 TO_FLOAT 関数のリレーション出力

Timestamp   Tuple Kind  Tuple
10:+ 1.02000:+ 5.23400:+ 3.04700:+ 5.2

TO_TIMESTAMP

構文

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

目的

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

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

例 5-49 のクエリ q277例 5-50 のデータ ストリーム STs2 があるとします。ストリーム STs2 にはスキーマ (c1 integer, c2 char(20)) があります。このクエリは、例 5-51 に示すリレーションを返します。

例 5-49 TO_TIMESTAMP 関数のクエリ

<query id="q277"><![CDATA[ 
    select * from STs2 
    where 
        to_timestamp(c2,"yyMMddHHmmss") = to_timestamp("09/07/2005 10:13:48")
]]></query>

例 5-50 TO_TIMESTAMP 関数のストリーム入力

Timestamp   Tuple
1           1,"040807111348"
2           2,"050907101348"
3           3,"041007111348"
4           4,"060806111248"
h 200000000

例 5-51 TO_TIMESTAMP 関数のリレーション出力

Timestamp   Tuple Kind  Tuple
2:          +           2,050907101348

XMLCOMMENT

構文

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

目的

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

XMLCOMMENT を使用すると、整形式の XML コメントをクエリ結果に追加できます。

この関数は次の引数を使用します。

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

例 5-52 のクエリ tkdata64_q1例 5-53 のデータ ストリーム tkdata64_S があるとします。ストリーム tkdata64_S にはスキーマ (c1 char(30)) があります。このクエリは、例 5-54 に示すリレーションを返します。

例 5-52 XMLCOMMENT 関数のクエリ

<query id="tkdata64_q1"><![CDATA[ 
    xmlconcat(xmlelement("parent", c1), xmlcomment("this is a comment")) 
from tkdata64_S
]]></query>

例 5-53 XMLCOMMENT 関数のストリーム入力

Timestamp   Tuple
c 30
1000        "san jose"
1000        "mountain view"
1000
1000        "sunnyvale"
1003
1004        "belmont"

例 5-54 XMLCOMMENT 関数のリレーション出力

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

XMLCONCAT

構文

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

目的

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

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

この関数は次の引数を使用します。

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

この関数は、SQLX のストリームを処理する場合に特に役立ちます。詳細については、「SQL/XML (SQLX)」を参照してください。

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


関連項目 :

「SQL/XML (SQLX)」

例 5-52 のクエリ tkdata64_q1例 5-53 のデータ ストリーム tkdata64_S があるとします。ストリーム tkdata64_S にはスキーマ (c1 char(30)) があります。このクエリは、例 5-54 に示すリレーションを返します。

例 5-55 XMLCONCAT 関数のクエリ

<query id="tkdata64_q1"><![CDATA[ 
    select 
        xmlconcat(xmlelement("parent", c1), xmlcomment("this is a comment")) 
    from tkdata64_S
]]></query>

例 5-56 XMLCONCAT 関数のストリーム入力

Timestamp   Tuple
c 30
1000        "san jose"
1000        "mountain view"
1000
1000        "sunnyvale"
1003
1004        "belmont"

例 5-57 XMLCONCAT 関数のリレーション出力

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

XMLEXISTS

構文

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

目的

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

この関数は次の引数を使用します。

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

この関数は、SQLX のストリームを処理する場合に特に役立ちます。詳細については、「SQL/XML (SQLX)」を参照してください。

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

例 5-58 XMLEXISTS 関数のクエリ

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

例 5-59 XMLEXISTS 関数のストリーム入力

Timestamp   Tuple
3           1, "<PDRecord><PDName>hello</PDName></PDRecord>"
4           2, "<PDRecord><PDName>hello</PDName><PDName>hello1</PDName></PDRecord>"
5           3, "<PDRecord><PDId>6</PDId><PDName>hello1</PDName></PDRecord>"
6           4, "<PDRecord><PDId>46</PDId><PDName>hello2</PDName></PDRecord>"

例 5-60 XMLEXISTS 関数のリレーション出力

Timestamp   Tuple Kind  Tuple
3:          +           false
4:          +           false
5:          +           true
6:          +           false

XMLQUERY

構文

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

目的

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

この関数は次の引数を使用します。

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

この関数は、SQLX のストリームを処理する場合に特に役立ちます。詳細については、「SQL/XML (SQLX)」を参照してください。

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

例 5-61 XMLQUERY 関数のクエリ

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

例 5-62 XMLQUERY 関数のストリーム入力

Timestamp   Tuple
3           1, "<PDRecord><PDName>hello</PDName></PDRecord>"
4           2, "<PDRecord><PDName>hello</PDName><PDName>hello1</PDName></PDRecord>"
5           3, "<PDRecord><PDId>6</PDId><PDName>hello1</PDName></PDRecord>"
6           4, "<PDRecord><PDId>46</PDId><PDName>hello2</PDName></PDRecord>"

例 5-63 XMLQUERY 関数のリレーション出力

Timestamp   Tuple Kind  Tuple
3:          +
4:          +
5:          +           "<PDName>hello1</PDName>"
6:          +           "<PDName>hello2</PDName>"