F XQuery-SQLマッピング・リファレンス

この章では、ネイティブRDBMSデータ型のサポート、およびOracle XQueryエンジンが生成する、またはサポートするXQueryマッピングについて説明します。

この章の内容は次のとおりです。

Oracle Service Bus XQueryでのこれらのマッピングの使用については、「XQueryを使用したデータベースへのアクセス」を参照してください。

Oracle Service BusでサポートされているデータベースおよびJDBCドライバの詳細は、次の場所にあるOracle Fusion Middlewareのサポートされるシステム構成を参照してください:

http://www.oracle.com/technetwork/middleware/ias/downloads/fusion-certification-100350.html

F.1 IBM DB2/NT 8

この項では、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

xs:string

プロジェクト・リストのみで導き出されます。

DATE

xs:date

DOUBLE

xs:double

DECIMAL(p,s) (NUMERIC)

xs:decimal(s > 0の場合)、xs:integer(s = 0の場合): ここで、pは精度(小数点以下および以上の両方を含めた総桁数)で、sは位取り(小数点次の桁数)を表します。

INTEGER

xs:int

LONG VARCHAR1

xs:string

LONG VARCHAR FOR BIT DATA

xs:hexBinary

REAL

xs:float

SMALLINT

xs:short

TIME

xs:time

秒単位の精度。

TIMEおよびTIMESTAMPの制限のため、値はローカル・タイム・ゾーンに変換されます(タイムゾーン情報は削除されます)。

TIMESTAMP

xs:dateTime

精度はミリ秒までです。

VARCHAR

xs:string

VARCHAR() FOR BIT DATA

xs:hexBinary

F.2 Microsoft SQL Server

この項では、Microsoft SQL ServerについてXQueryエンジンが生成する、またはサポートするデータ型マッピングについて示します。

表F-2 SQL Server 2000データ型マッピング

SQLのデータ型 XQueryの型

BIGINT

xs:long

BINARY

xs:hexBinary

BIT

xs:boolean

CHAR

xs:string

DATETIME

xs:dateTime

DATETIMEの制限のため、値はローカル・タイム・ゾーンに変換され(タイムゾーン情報は削除)、小数点以下の秒はミリ秒まで切り捨てられます。

秒の小数点の精度は3桁までです(ミリ秒)。タイム・ゾーンはありません。

DECIMAL(p,s) (NUMERIC)

xs:decimal(s > 0の場合)、xs:integer(s = 0の場合): ここで、pは精度(小数点以下および以上の両方を含めた総桁数)で、sは位取り(小数点次の桁数)を表します。

FLOAT

xs:double

IMAGE

xs:hexBinary

INTEGER

xs:int

MONEY

xs:decimal

NCHAR

xs:string

NTEXT脚注1

xs:string

NVARCHAR

xs:string

REAL

xs:float

SMALLDATETIME脚注2

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

プロジェクト・リストのみで導き出されます。

脚注2

分単位の精度。

F.3 Oracle8i、8.1.x

この項では、Oracle 8.1.x (Oracle 8i)についてXQueryエンジンが生成する、またはサポートするデータ型について示します。

表F-3 Oracle 8.1.xデータ型マッピング

Oracle 8データ型 XQueryの型

BFILE

サポートされません

BLOB

xs:hexBinary

CHAR

xs:string

CLOB

xs:string

プロジェクト・リストのみで導き出されます。

DATE

xs:dateTime

秒の小数点はサポートしていません。

FLOAT

xs:double

LONG

xs:string

秒の小数点はサポートしていません。

LONG RAW

xs:hexBinary

NCHAR

xs:string

NCLOB

xs:string

秒の小数点はサポートしていません。

NUMBER

xs:double

NUMBER(p,s)

xs:decimal(s > 0の場合)、xs:integer(s <=0の場合): ここで、pは精度(小数点以下および以上の両方を含めた総桁数)で、sは位取り(小数点次の桁数)を表します。

NVARCHAR2

xs:string

RAW

xs:hexBinary

ROWID

xs:string

UROWID

xs:string

F.4 Oracle 9i以降

この項では、Oracle Database 9i、10g、11gおよび12cについてXQueryエンジンが生成する、またはサポートするデータ型およびその他のマッピングについて説明します。

Oracleでは空の文字列はNULLとして処理され、この文字列は、XQueryセマンティクスから逸脱しており、プッシュ・ダウンされた式に対し予期しない結果が導き出される可能性があります。

表F-4 Oracle 9i以降のデータ型マッピング

Oracleデータ型 XQueryの型

BFILE

サポートされません

BLOB

xs:hexBinary

CHAR

xs:string

CLOB

xs:string

プロジェクト・リストのみで導き出されます。

DATE

xs:dateTime

SDOがxs:dateTime値をOracle DATE型で保存する場合、それはローカル・タイム・ゾーンに変換され、DATEの制限のため、小数点次の秒は切り捨てられます。

FLOAT

xs:double

INTERVALDAYTOSECOND

xdt:dayTimeDuration

INTERVALYEARTOMONTH

xdt:yearMonthDuration

LONG

xs:string

プロジェクト・リストのみで導き出されます。

LONG RAW

xs:hexBinary

NCHAR

xs:string

NCLOB

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

タイム・ゾーン情報があるかどうかに応じて、XQueryエンジンはXQuery xs:dateTimeをTIMESTAMPまたはTIMESTAMP WITH TIMEZONEデータ型のいずれかにマップします。SDOを使用してxs:dateTimeを保存する場合、SQLの型定義に応じて、秒の小数点次の桁が欠落することがあります。

TIMESTAMP WITH LOCAL TIMEZONE

xs:dateTime

TIMESTAMP WITH TIMEZONE

xs:dateTime

VARCHAR2

xs:string

UROWID

xs:string

F.5 Sybase 12.5.2 (およびそれ以上)

この項では、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

xs:dateTime

小数点以下3桁までの秒(ミリ秒)をサポートします。タイム・ゾーン情報はありません。

SDOがxs:dateTime値をOracle DATE型で保存する場合、それはローカル・タイム・ゾーンに変換され、DATEの制限のため、小数点次の秒は切り捨てられます。

DECIMAL(p,s) (NUMERIC)

xs:decimal (if s > 0)、xs:integer (if s == 0)

ここで、pは精度(小数点以下および以上の両方を含めた総桁数)で、sは位取り(小数点次の桁数)を表します。

DOUBLEPRECISION

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

xs:dateTime

分単位の精度。

SMALLINT

xs:short

SMALLMONEY

xs:decimal

SYSNAME

xs:string

TEXT

xs:string

テキストを戻す式は、プロジェクト・リストでのみプッシュ・ダウンされます。

TIME

xs:time

TINYINT

xs:short

VARBINARY

xs:hexBinary

VARCHAR

xs:string

F.6 ベース(汎用) RDBMSデータ型マッピング

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

2005

xs:string

プロジェクト・リストのみで導き出されます。

DATE

91

xs:date

DATEの制限のため、値はローカル・タイム・ゾーンに変換されます(タイムゾーン情報は削除されます)。

DECIMAL (p,s)

3

xs:decimal (if s > 0)、xs:integer (if s =0)

ここで、pは精度(小数点以下および以上の両方を含めた総桁数)で、sは位取り(小数点次の桁数)を表します。

DOUBLE

8

xs:double

FLOAT

6

xs:double

INTEGER

4

xs:int

LONGVARBINARY

-4

xs:hexBinary

LONGVARCHAR

-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

92

xs:time

xs:timeをTIMEに変換する場合、基盤のRDBMSの精度により、TIMEデータ型の精度および小数点以下切捨ての度合い(該当する場合)が決定します。

TIMESTAMP

93

xs:dateTime

xs:timeをTIMEに変換する場合、基盤のRDBMSの精度により、TIMEデータ型の精度および小数点以下切捨ての度合い(該当する場合)が決定します。

TINYINT

-6

xs:short

VARBINARY

-3

xs:hexBinary

VARCHAR

12

xs:string

その他のベンダー固有のJDBCタイプ・コード

1111

Oracle Service Busは、ネイティブ・データ型名を使用して適切なXQueryデータ型にマップします。