この章では、ネイティブ・データ型のサポート、およびOracle XQueryエンジンが生成する、またはサポートするXQueryマッピングについて説明します。
この章の内容は次のとおりです。
コアRDBMSデータ型マッピング
Oracle Service Bus XQueryでのこれらのマッピングの使用については、「XQueryを使用したデータベースへのアクセス」を参照してください。
Oracle Service BusでサポートされているデータベースおよびJDBCドライバの詳細は、次の場所にあるOracle Fusion Middlewareのサポートされるシステム構成を参照してください:
http://www.oracle.com/technetwork/middleware/ias/downloads/fusion-certification-100350.html
次の表に、IBM DB2/NT 8についてXQueryエンジンが生成またはサポートするデータ型マッピングを示します。
表F-1 IBM DB2データ型マッピング
DB2データ型 | XQuery型 |
---|---|
BIGINT |
xs:long |
BLOB |
xs:hexBinary |
CHAR |
xs:string |
CHAR() FOR BIT DATA |
xs:hexBinary |
CLOB脚注1 |
xs:string |
DATE |
xs:date |
DOUBLE |
xs:double |
DECIMAL(p,s)脚注 2 (NUMERIC) |
xs:decimal (if s > 0)、xs:integer (if s = 0) |
INTEGER |
xs:int |
LONG VARCHAR1 |
xs:string |
LONG VARCHAR FOR BIT DATA |
xs:hexBinary |
REAL |
xs:float |
SMALLINT |
xs:short |
TIME脚注3 |
xs:time脚注4 |
TIMESTAMP脚注5 |
xs:dateTime脚注 |
VARCHAR |
xs:string脚注 |
VARCHAR() FOR BIT DATA |
xs:hexBinary |
脚注1
プロジェクト・リストのみで導き出されます。
脚注2
ここで、pは精度(小数点以下および以上の両方を含めた総桁数)で、sは位取り(小数点次の桁数)を表します。
脚注3
秒単位の精度。
脚注4
TIMEおよびTIMESTAMPの制限のため、値はローカル・タイム・ゾーンに変換されます(タイムゾーン情報は削除されます)。
脚注5
精度はミリ秒までです。
次の表に、Microsoft SQL ServerについてXQueryエンジンが生成またはサポートするデータ型マッピングを示します。
表F-2 SQL Server 2000データ型マッピング
SQLデータ型 | XQuery型 |
---|---|
BIGINT |
xs:long |
BINARY |
xs:hexBinary |
BIT |
xs:boolean |
CHAR |
xs:string |
DATETIME脚注6 |
xs:dateTime脚注7 |
DECIMAL(p,s)脚注 8 (NUMERIC) |
xs:decimal (if s > 0)、xs:integer (if s = 0) |
FLOAT |
xs:double |
IMAGE |
xs:hexBinary |
INTEGER |
xs:int |
MONEY |
xs:decimal |
NCHAR |
xs:string |
NTEXT脚注9 |
xs:string |
NVARCHAR |
xs:string |
REAL |
xs:float |
SMALLDATETIME脚注10 |
xs:dateTime |
SMALLINT |
xs:short |
SMALLMONEY |
xs:decimal |
SQL_VARIANT |
xs:string |
TEXT4 |
xs:string |
TIMESTAMP |
xs:hexBinary |
TINYINT |
xs:short |
VARBINARY |
xs:hexBinary |
VARCHAR |
xs:string |
UNIQUIDENTIFIER |
xs:string |
脚注6
秒の小数点の精度は3桁までです(ミリ秒)。タイム・ゾーンはありません。
脚注7
DATETIMEの制限のため、値はローカル・タイム・ゾーンに変換され(タイムゾーン情報は削除)、小数点以下の秒はミリ秒まで切り捨てられます。
脚注8
ここで、pは精度(小数点以下および以上の両方を含めた総桁数)で、sは位取り(小数点次の桁数)を表します。
脚注9
プロジェクト・リストのみで導き出されます。
脚注10
分単位の精度。
次の表に、Oracle 8.1.x (Oracle 8i)についてXQueryエンジンが生成またはサポートするデータ型を示します。
表F-3 Oracle 8.1.xデータ型マッピング
Oracle 8データ型 | XQuery型 |
---|---|
BFILE |
サポートされません |
BLOB |
xs:hexBinary |
CHAR |
xs:string |
CLOB脚注11 |
xs:string |
DATE脚注12 |
xs:dateTime |
FLOAT |
xs:double |
LONG1 |
xs:string |
LONG RAW |
xs:hexBinary |
NCHAR |
xs:string |
NCLOB1 |
xs:string |
NUMBER |
xs:double |
NUMBER(p,s)脚注 13 |
xs:decimal (if s > 0)、xs:integer (if s <=0) |
NVARCHAR2 |
xs:string |
RAW |
xs:hexBinary |
ROWID |
xs:string |
UROWID |
xs:string |
脚注11
プロジェクト・リストのみで導き出されます。
脚注12
秒の小数点はサポートしていません。
脚注13
ここで、pは精度(小数点以下および以上の両方を含めた総桁数)で、sは位取り(小数点次の桁数)を表します。
次の表に、Oracle Database 9i、10g、11g、および12cについてXQueryエンジンが生成またはサポートするデータ型とその他のマッピングを示します。Oracleでは空の文字列はNULLとして処理され、この文字列は、XQueryセマンティクスから逸脱しており、プッシュ・ダウンされた式に対し予期しない結果が導き出される可能性があります。
表F-4 Oracle 9i以降のデータ型マッピング
Oracleデータ型 | XQuery型 |
---|---|
BFILE |
サポートされません |
BLOB |
xs:hexBinary |
CHAR |
xs:string |
CLOB脚注14 |
xs:string |
DATE |
xs:dateTime脚注15 |
FLOAT |
xs:double |
INTERVALDAYTOSECOND |
xdt:dayTimeDuration |
INTERVALYEARTOMONTH |
xdt:yearMonthDuration |
LONG1 |
xs:string |
LONG RAW |
xs:hexBinary |
NCHAR |
xs:string |
NCLOB1 |
xs:string |
NUMBER |
xs:double |
NUMBER(p,s) |
xs:decimal (if s > 0)、xs:integer (if s <=0) |
NVARCHAR2 |
xs:string |
RAW |
xs:hexBinary |
ROWID |
xs:string |
TIMESTAMP |
xs:dateTime脚注16 |
TIMESTAMP WITH LOCAL TIMEZONE |
xs:dateTime |
TIMESTAMP WITH TIMEZONE |
xs:dateTime |
VARCHAR2 |
xs:string |
UROWID |
xs:string |
脚注14
プロジェクト・リストのみで導き出されます。
脚注15
SDOがxs:dateTime値をOracle DATE型で保存する場合、それはローカル・タイム・ゾーンに変換され、DATEの制限のため、小数点次の秒は切り捨てられます。
脚注16
タイム・ゾーン情報があるかどうかに応じて、XQueryエンジンはXQuery xs:dateTimeをTIMESTAMPまたはTIMESTAMP WITH TIMEZONEデータ型のいずれかにマップします。SDOを使用してxs:dateTimeを保存する場合、SQLの型定義に応じて、秒の小数点次の桁が欠落することがあります。
次の表に、Sybase 12.5.2 (およびそれ以上)についてXQueryエンジンが生成またはサポートするデータ型を示します。
注意:
SybaseはXQueryセマンティクスから逸脱しており(XQueryセマンティクスでは空の文字列は無視されます)、空の文字列はシングル・スペースの文字列として処理されます。
表F-5 Sybase 12.5.2データ型マッピング
Sybaseデータ型 | XQuery型 |
---|---|
BINARY |
xs:hexBinary |
BIT |
xs:boolean |
CHAR |
xs:string |
DATE |
xs:date |
DATETIME脚注17 |
xs:dateTime脚注18 |
DECIMAL(p,s)脚注 19 (NUMERIC) |
xs:decimal (if s > 0)、xs:integer (if s == 0) |
DOUBLE PRECISION |
xs:double |
FLOAT |
xs:double |
IMAGE |
xs:hexBinary |
INT (INTEGER) |
xs:int |
MONEY |
xs:decimal |
NCHAR |
xs:string |
NVARCHAR |
xs:string |
REAL |
xs:float |
SMALLDATETIME脚注20 |
xs:dateTime |
SMALLINT |
xs:short |
SMALLMONEY |
xs:decimal |
SYSNAME |
xs:string |
TEXT脚注21 |
xs:string |
TIME |
xs:time |
TINYINT |
xs:short |
VARBINARY |
xs:hexBinary |
VARCHAR |
xs:string |
脚注17
小数点以下3桁までの秒(ミリ秒)をサポートします。タイム・ゾーン情報はありません。
脚注18
SDOがxs:dateTime値をOracle DATE型で保存する場合、それはローカル・タイム・ゾーンに変換され、DATEの制限のため、小数点次の秒は切り捨てられます。
脚注19
ここで、pは精度(小数点以下および以上の両方を含めた総桁数)で、sは位取り(小数点次の桁数)を表します。
脚注20
分単位の精度。
脚注21
テキストを戻す式は、プロジェクト・リストでのみプッシュ・ダウンされます。
SQLをXQueryデータ型にマッピングする際、XQueryエンジンでは最初にJDBCタイプ・コードを確認します。タイプ・コードがXQuery型に対応している場合、XQueryエンジンでは一致するネイティブ・タイプ名を使用します。一致するタイプ・コードやタイプ名がない場合、列は無視されます。表F-6にこのマッピングを示します。
表F-6 RDBMSデータ型マッピング
JDBCデータ型 | タイプ・コード | XQueryデータ型 |
---|---|---|
BIGINT |
-5 |
xs:long |
BINARY |
-2 |
xs:string |
BIT |
-7 |
xs:boolean |
BLOB |
2004 |
xs:hexBinary |
BOOLEAN |
16 |
xs:boolean |
CHAR |
1 |
xs:string |
CLOB脚注22 |
2005 |
xs:string |
DATE |
91 |
xs:date脚注23 |
DECIMAL (p,s)脚注 24 |
3 |
xs:decimal (if s > 0)、xs:integer (if s =0) |
DOUBLE |
8 |
xs:double |
FLOAT |
6 |
xs:double |
INTEGER |
4 |
xs:int |
LONGVARBINARY |
-4 |
xs:hexBinary |
LONGVARCHAR1 |
-1 |
xs:string |
NUMERIC (p,s)脚注 |
2 |
xs:decimal (if s > 0)、xs:integer (if s =0) |
REAL |
7 |
xs:float |
SMALLINT |
5 |
xs:short |
TIME脚注25 |
92 |
xs:time4 |
TIMESTAMP4 |
93 |
xs:dateTime脚注 |
TINYINT |
-6 |
xs:short |
VARBINARY |
-3 |
xs:hexBinary |
VARCHAR |
12 |
xs:string |
その他のベンダー固有のJDBCタイプ・コード |
1111 |
Oracle Service Busは、ネイティブ・データ型名を使用して適切なXQueryデータ型にマップします。 |
脚注22
プロジェクト・リストのみで導き出されます。
脚注23
DATEの制限のため、値はローカル・タイム・ゾーンに変換されます(タイムゾーン情報は削除されます)。
脚注24
ここで、pは精度(小数点以下および以上の両方を含めた総桁数)で、sは位取り(小数点次の桁数)を表します。
脚注25
xs:timeをTIMEに変換する場合、基盤のRDBMSの精度により、TIMEデータ型の精度および小数点以下切捨ての度合い(該当する場合)が決定します。