この章では、ネイティブ・データ型のサポート、およびOracle XQueryエンジンが生成する、またはサポートするXQueryマッピングについて説明します。
この章の内容は次のとおりです。
コアRDBMSデータ型マッピング
Oracle Service Bus XQueryでのこれらのマッピングの使用については、37.9項「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エンジンが生成する、またはサポートするデータ型マッピングについて示します。
表H-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脚注 4 |
|
VARCHAR |
xs:string脚注 4 |
|
VARCHAR() FOR BIT DATA |
xs:hexBinary |
脚注 1 プロジェクト・リストでのみプッシュ・ダウンされます。
脚注 2 ここで、pは精度(小数点以下および以上の両方を含めた総桁数)で、sは位取り(小数点次の桁数)を表します。
脚注 3 精度は1秒単位です。
脚注 4 TIMEおよびTIMESTAMPの制限のため、値はローカル・タイム・ゾーンに変換されます(タイム・ゾーン情報は削除されます)。
脚注 5 精度はミリ秒に制限されています。
この項では、Microsoft SQL ServerについてXQueryエンジンが生成する、またはサポートするデータ型マッピングについて示します。
表H-2 SQL Server 2000データ型マッピング
| SQLデータ型 | XQuery型 |
|---|---|
|
BIGINT |
xs:long |
|
BINARY |
xs:hexBinary |
|
BIT |
xs:boolean |
|
CHAR |
xs:string |
|
DATETIME脚注 1 |
xs:dateTime脚注 2 |
|
DECIMAL(p,s)脚注 3 (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脚注 4 |
xs:string |
|
NVARCHAR |
xs:string |
|
REAL |
xs:float |
|
SMALLDATETIME脚注 5 |
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 |
脚注 1 小数点以下3桁までの秒精度(ミリ秒)。タイム・ゾーン情報はありません。
脚注 2 DATETIMEの制限のため、値はローカル・タイム・ゾーンに変換され(タイム・ゾーン情報は削除)、小数点次の秒はミリ秒まで切り捨てられます。
脚注 3 ここで、pは精度(小数点以下および以上の両方を含めた総桁数)で、sは位取り(小数点次の桁数)を表します。
脚注 4 プロジェクト・リストでのみプッシュ・ダウンされます。
脚注 5 精度は1分単位です。
この項では、Oracle 8.1.x (Oracle 8i)についてXQueryエンジンが生成する、またはサポートするデータ型について示します。
表H-3 Oracle 8.1.xデータ型マッピング
| Oracle 8データ型 | XQuery型 |
|---|---|
|
BFILE |
サポートされません |
|
BLOB |
xs:hexBinary |
|
CHAR |
xs:string |
|
CLOB脚注 1 |
xs:string |
|
DATE脚注 2 |
xs:dateTime |
|
FLOAT |
xs:double |
|
LONG1 |
xs:string |
|
LONG RAW |
xs:hexBinary |
|
NCHAR |
xs:string |
|
NCLOB1 |
xs:string |
|
NUMBER |
xs:double |
|
NUMBER(p,s)脚注 3 |
xs:decimal (if s > 0), xs:integer (if s <=0) |
|
NVARCHAR2 |
xs:string |
|
RAW |
xs:hexBinary |
|
ROWID |
xs:string |
|
UROWID |
xs:string |
脚注 1 プロジェクト・リストでのみプッシュ・ダウンされます。
脚注 2 小数点次の秒はサポートしません。
脚注 3 ここで、pは精度(小数点以下および以上の両方を含めた総桁数)で、sは位取り(小数点次の桁数)を表します。
この項では、Oracle 9iおよびOracle Database 10gについてXQueryエンジンが生成する、またはサポートするデータ型およびその他のマッピングについて説明します。Oracleでは空の文字列はNULLとして処理されます。この文字列は、XQueryセマンティクスから逸脱しており、プッシュ・ダウンされた式に対し予期しない結果が導き出される可能性があります。
表H-4 Oracle 9i、Oracle Database 10gデータ型マッピング
| Oracleデータ型 | XQuery型 |
|---|---|
|
BFILE |
サポートされません |
|
BLOB |
xs:hexBinary |
|
CHAR |
xs:string |
|
CLOB脚注 1 |
xs:string |
|
DATE |
xs:dateTime脚注 2 |
|
FLOAT |
xs:double |
|
INTERVAL DAY TO SECOND |
xdt:dayTimeDuration |
|
INTERVAL YEAR TO MONTH |
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脚注 3 |
|
TIMESTAMP WITH LOCAL TIMEZONE |
xs:dateTime |
|
TIMESTAMP WITH TIMEZONE |
xs:dateTime |
|
VARCHAR2 |
xs:string |
|
UROWID |
xs:string |
脚注 1 プロジェクト・リストでのみプッシュ・ダウンされます。
脚注 2 SDOがxs:dateTime値をOracle DATE型で保存する場合、それはローカル・タイム・ゾーンに変換され、DATEの制限のため、小数点次の秒は切り捨てられます。
脚注 3 タイム・ゾーン情報があるかどうかに応じて、XQueryエンジンはXQuery xs:dateTimeをTIMESTAMPまたはTIMESTAMP WITH TIMEZONEデータ型のいずれかにマップします。SDOを使用してxs:dateTimeを保存する場合、SQLの型定義に応じて、秒の小数点次の桁が欠落することがあります。
この項では、Sybase 12.5.2 (またはそれ以上)についてXQueryエンジンが生成する、またはサポートするデータ型について示します。
|
注意: SybaseはXQueryセマンティクスから逸脱しており(XQueryセマンティクスでは空の文字列は無視されます)、空の文字列はシングル・スペースの文字列として処理されます。 |
表H-5 Sybase 12.5.2データ型マッピング
| Sybaseデータ型 | XQuery型 |
|---|---|
|
BINARY |
xs:hexBinary |
|
BIT |
xs:boolean |
|
CHAR |
xs:string |
|
DATE |
xs:date |
|
DATETIME脚注 1 |
xs:dateTime脚注 2 |
|
DECIMAL(p,s)脚注 3 (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脚注 4 |
xs:dateTime |
|
SMALLINT |
xs:short |
|
SMALLMONEY |
xs:decimal |
|
SYSNAME |
xs:string |
|
TEXT脚注 5 |
xs:string |
|
TIME |
xs:time |
|
TINYINT |
xs:short |
|
VARBINARY |
xs:hexBinary |
|
VARCHAR |
xs:string |
脚注 1 小数点以下3桁までの秒(ミリ秒)をサポートします。タイム・ゾーン情報はありません。
脚注 2 SDOがxs:dateTime値をOracle DATE型で保存する場合、それはローカル・タイム・ゾーンに変換され、DATEの制限のため、小数点次の秒は切り捨てられます。
脚注 3 ここで、pは精度(小数点以下および以上の両方を含めた総桁数)で、sは位取り(小数点次の桁数)を表します。
脚注 4 精度は1分単位です。
脚注 5 テキストを返す式は、プロジェクト・リストでのみプッシュ・ダウンされます。
SQLをXQueryデータ型にマッピングする際、XQueryエンジンでは最初にJDBCタイプ・コードを確認します。タイプ・コードがXQuery型に対応している場合、XQueryエンジンでは一致するネイティブ・タイプ名を使用します。一致するタイプ・コードやタイプ名がない場合、列は無視されます。表H-6にこのマッピングを示します。
表H-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脚注 1 |
2005 |
xs:string |
|
DATE |
91 |
xs:date脚注 2 |
|
DECIMAL (p,s)脚注 3 |
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)脚注 3 |
2 |
xs:decimal (if s > 0), xs:integer (if s =0) |
|
REAL |
7 |
xs:float |
|
SMALLINT |
5 |
xs:short |
|
TIME脚注 4 |
92 |
xs:time4 |
|
TIMESTAMP4 |
93 |
xs:dateTime脚注 2 |
|
TINYINT |
-6 |
xs:short |
|
VARBINARY |
-3 |
xs:hexBinary |
|
VARCHAR |
12 |
xs:string |
|
その他のベンダー固有のJDBCタイプ・コード |
1111 |
Oracle Service Busは、ネイティブ・データ型名を使用して適切なXQueryデータ型にマップします。 |
脚注 1 プロジェクト・リストでのみプッシュ・ダウンされます。
脚注 2 DATEの制限のため、値はローカル・タイム・ゾーンに変換されます(タイム・ゾーン情報は削除されます)。
脚注 3 ここで、pは精度(小数点以下および以上の両方を含めた総桁数)で、sは位取り(小数点次の桁数)を表します。
脚注 4 xs:timeをTIMEに変換する場合、基盤のRDBMSの精度により、TIMEデータ型の精度および小数点以下切捨ての度合い(該当する場合)が決定します。