F XQuery-SQLマッピング・リファレンス
この章では、ネイティブRDBMSデータ型のサポート、および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
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データ型にマップします。 |