この章では、ネイティブ・データ型のサポート、および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 |
CLOB1 |
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 |
TIME3 |
xs:time |
TIMESTAMP5 |
xs:dateTime4 |
VARCHAR |
xs:string4 |
VARCHAR() FOR BIT DATA |
xs:hexBinary |
次の表に、Microsoft SQL ServerについてXQueryエンジンが生成またはサポートするデータ型マッピングを示します。
表F-2 SQL Server 2000データ型マッピング
SQLデータ型 | XQuery型 |
---|---|
BIGINT |
xs:long |
BINARY |
xs:hexBinary |
BIT |
xs:boolean |
CHAR |
xs:string |
DATETIME6 |
xs:dateTime7 |
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 |
NTEXT9 |
xs:string |
NVARCHAR |
xs:string |
REAL |
xs:float |
SMALLDATETIME10 |
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 |
次の表に、Oracle 8.1.x (Oracle 8i)についてXQueryエンジンが生成またはサポートするデータ型を示します。
表F-3 Oracle 8.1.xデータ型マッピング
Oracle 8データ型 | XQuery型 |
---|---|
BFILE |
サポートされません |
BLOB |
xs:hexBinary |
CHAR |
xs:string |
CLOB11 |
xs:string |
DATE12 |
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 |
次の表に、Oracle Database 9i、10g、11g、および12cについてXQueryエンジンが生成またはサポートするデータ型とその他のマッピングを示します。Oracleでは空の文字列はNULLとして処理され、この文字列は、XQueryセマンティクスから逸脱しており、プッシュ・ダウンされた式に対し予期しない結果が導き出される可能性があります。
表F-4 Oracle 9i以降のデータ型マッピング
Oracleデータ型 | XQuery型 |
---|---|
BFILE |
サポートされません |
BLOB |
xs:hexBinary |
CHAR |
xs:string |
CLOB14 |
xs:string |
DATE |
xs:dateTime15 |
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:dateTime16 |
TIMESTAMP WITH LOCAL TIMEZONE |
xs:dateTime |
TIMESTAMP WITH TIMEZONE |
xs:dateTime |
VARCHAR2 |
xs:string |
UROWID |
xs:string |
次の表に、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 |
DATETIME17 |
xs:dateTime18 |
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 |
SMALLDATETIME20 |
xs:dateTime |
SMALLINT |
xs:short |
SMALLMONEY |
xs:decimal |
SYSNAME |
xs:string |
TEXT21 |
xs:string |
TIME |
xs:time |
TINYINT |
xs:short |
VARBINARY |
xs:hexBinary |
VARCHAR |
xs:string |
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 |
CLOB22 |
2005 |
xs:string |
DATE |
91 |
xs:date |
DECIMAL (p,s) |
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)24 |
2 |
xs:decimal (if s > 0)、xs:integer (if s =0) |
REAL |
7 |
xs:float |
SMALLINT |
5 |
xs:short |
TIME25 |
92 |
xs:time4 |
TIMESTAMP4 |
93 |
xs:dateTime23 |
TINYINT |
-6 |
xs:short |
VARBINARY |
-3 |
xs:hexBinary |
VARCHAR |
12 |
xs:string |
その他のベンダー固有のJDBCタイプ・コード |
1111 |
Oracle Service Busは、ネイティブ・データ型名を使用して適切なXQueryデータ型にマップします。 |
プロジェクト・リストのみで導き出されます。
ここで、pは精度(小数点以下および以上の両方を含めた総桁数)で、sは位取り(小数点次の桁数)を表します。
秒単位の精度。
TIMEおよびTIMESTAMPの制限のため、値はローカル・タイム・ゾーンに変換されます(タイムゾーン情報は削除されます)。
精度はミリ秒までです。
秒の小数点の精度は3桁までです(ミリ秒)。タイム・ゾーンはありません。
DATETIMEの制限のため、値はローカル・タイム・ゾーンに変換され(タイムゾーン情報は削除)、小数点以下の秒はミリ秒まで切り捨てられます。
ここで、pは精度(小数点以下および以上の両方を含めた総桁数)で、sは位取り(小数点次の桁数)を表します。
プロジェクト・リストのみで導き出されます。
分単位の精度。
プロジェクト・リストのみで導き出されます。
秒の小数点はサポートしていません。
ここで、pは精度(小数点以下および以上の両方を含めた総桁数)で、sは位取り(小数点次の桁数)を表します。
プロジェクト・リストのみで導き出されます。
SDOがxs:dateTime値をOracle DATE型で保存する場合、それはローカル・タイム・ゾーンに変換され、DATEの制限のため、小数点次の秒は切り捨てられます。
タイム・ゾーン情報があるかどうかに応じて、XQueryエンジンはXQuery xs:dateTimeをTIMESTAMPまたはTIMESTAMP WITH TIMEZONEデータ型のいずれかにマップします。SDOを使用してxs:dateTimeを保存する場合、SQLの型定義に応じて、秒の小数点次の桁が欠落することがあります。
小数点以下3桁までの秒(ミリ秒)をサポートします。タイム・ゾーン情報はありません。
SDOがxs:dateTime値をOracle DATE型で保存する場合、それはローカル・タイム・ゾーンに変換され、DATEの制限のため、小数点次の秒は切り捨てられます。
ここで、pは精度(小数点以下および以上の両方を含めた総桁数)で、sは位取り(小数点次の桁数)を表します。
分単位の精度。
テキストを戻す式は、プロジェクト・リストでのみプッシュ・ダウンされます。
プロジェクト・リストのみで導き出されます。
DATEの制限のため、値はローカル・タイム・ゾーンに変換されます(タイムゾーン情報は削除されます)。
ここで、pは精度(小数点以下および以上の両方を含めた総桁数)で、sは位取り(小数点次の桁数)を表します。
xs:timeをTIMEに変換する場合、基盤のRDBMSの精度により、TIMEデータ型の精度および小数点以下切捨ての度合い(該当する場合)が決定します。