この章では、Oracle Continuous Query Language (Oracle CQL)の単一行関数のリファレンスを提供します。単一行関数は、問い合せたストリームまたはビューのすべての行について単一行の結果を返します。
この章の内容は次のとおりです。
表8-1は、Oracle CQLに用意されている組込みの単一行関数を示しています。
表8-1 Oracle CQLの組込みの単一行関数
|
注意:
組込み関数名では大文字と小文字が区別されるため、表示されている方(小文字)を使用してください。
注意:
ストリーム入力の例で、h
で始まる行(h 3800
など)はハートビート入力タプルです。これは、ハートビート値よりも小さいタイムスタンプを持つこれ以上の入力がないことをOracle Stream Analyticsに通知します。
構文
目的
concat
は、char2
に連結されたchar1
をchar[]
として返すか、byte2
に連結されたbyte1
をbyte[]
として返します。返される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
構文
例
問合せ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"
構文
目的
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
構文
目的
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
構文
目的
nvl
を使用すると、空白として返されるnullを問合せの結果内の文字列に置き換えることができます。expr1
がnullの場合、NVL
はexpr2
を返します。expr1
がnullでない場合、NVL
はexpr1
を返します。
引数expr1
およびexpr2
は任意のデータ型にすることができます。これらのデータ型が異なる場合、Oracle Stream Analyticsでは一方の型をもう一方に暗黙的に変換します。暗黙的な変換を行うことができない場合、Oracle Stream Analyticsはエラーを返します。暗黙的な変換は、次のように実行されます。
expr1
が文字データの場合、Oracle Stream Analyticsは、expr2
を文字データに変換してから、expr1
の文字セットでそれらを比較してVARCHAR2
を返します。
expr1
が数値の場合、Oracle Stream Analyticsによって数値の優先度の最も高い引数が判定され、もう一方の引数がこのデータ型に暗黙的に変換されて、そのデータ型が戻されます。
例
問合せ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
構文
目的
prev
は、現在のイベントが属するパーティション内にある、現在のイベントの前に発生したイベントのストリーム属性(関数の引数identifier2
)の値を返します。該当する前のイベントがない場合は、NULL
と評価されます。
指定されるストリーム要素の型は、次のいずれかになります。
integer
bigint
float
double
byte
char
interval
timestamp
この関数の戻り値の型は、指定されたストリーム属性の型によって異なります(関数の引数identifier2
)。
説明:
identifier1.identifier2
: identifier1
はPATTERN
句で使用されDEFINE
句で定義される相関変数の名前で、identifier2
はprev
によって前のイベントの値が返されるストリーム属性の名前です。
const_int1
: この引数の値がnの場合、現在のイベントが属するパーティション内のn個前のイベントを指定します。このようなイベントが存在する場合、n個前のイベントの属性値(引数identifier2
で指定される)が返され、それ以外の場合はNULL
が返されます。
const_bigint
: 時間範囲をナノ秒で指定し、現在のイベントより前の特定の時間範囲以内に発生した以前のイベントのみを探す場合に使用します。
問合せでPARTITION BY
がprev
関数と使用され、入力データに多数の異なるパーティション・キー値(つまり多数のパーティション)が含まれる場合、パーティションごとに以前のイベントを格納するために消費される合計メモリーは大きくなる可能性があります。そのような場合は、時間範囲(3番目の引数で、できるかぎり大きな範囲値を指定)を使用して、このメモリーを可能なかぎり再利用できるようにします。
例
prev(identifier1.identifier2)
問合せq2
とデータ・ストリームS1
があるとします。ストリームS1
のスキーマは(c1 integer)
です。この例では、パターンA
をA.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)
です。この例では、パターンA
をA.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)
です。この例では、パターンA
をA.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
ナノ秒を超えているためです。前のタプルは存在しないものとして処理され、prev
はNULL
を返すため、条件は一致しません。
<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
構文
例
問合せ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: -
構文
目的
systimestamp
は、Oracle Stream Analyticsサーバーが存在するシステムのシステム日付(小数で表す秒数とタイムゾーンを含む)を返します。戻り値の型は、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
構文
目的
入出力の型
この関数の入出力の型は次のとおりです。
入力の型 | 出力の型 |
---|---|
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
構文
目的
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 - ,
構文
目的
to_char
は、integer
、double
、bigint
、float
、timestamp
またはinterval
式の引数に対してchar
の値を返します。bigint
の引数がchar
の精度を超える場合、Oracle Stream Analyticsはエラーを返します。
例
問合せ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
構文
目的
to_double
は、bigint
、integer
またはfloat
式の引数に対してdouble
の値を返します。bigint
の引数がdouble
の精度を超える場合、Oracle Stream Analyticsはエラーを返します。
例
問合せ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
構文
目的
to_float
は、bigint
またはinteger
の引数と同等のfloat
の数値を返します。bigint
の引数がfloat
の精度を超える場合、Oracle Stream Analyticsはエラーを返します。
例
問合せ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
構文
目的
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
構文
目的
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-->
構文
目的
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-->
構文
目的
xmlexists
は、XMLデータのストリームに対する連続した問合せを作成します。この問合せでは、指定したXQueryをXMLデータが満たすかどうかを示すboolean
を返します。
この関数は、次の引数をとります。
const_string
: xqryargs_list
でバインドするXMLストリーム要素のデータにOracle Stream Analyticsが適用する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
構文
目的
xmlquery
は、XMLデータのストリームに対する連続した問合せを作成します。この問合せでは、指定したXQueryを満たすXMLデータを返します。
この関数は、次の引数をとります。
const_string
: xqryargs_list
でバインドするXMLストリーム要素のデータにOracle Stream Analyticsが適用する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>"