A データ型変換

Oracleは、ODBCデータ型をサポートされるOracleデータ型にマップします。問合せの結果が返されると、OracleはODBCデータ型をOracleデータ型に変換します。

Oracle Database Gateway for ODBCは、ODBC準拠のデータソースで使用されるデータ型をサポートされるOracleデータ型にマップします。問合せの結果が返されると、OracleデータベースはODBCデータ型をOracleデータ型に変換します。たとえば、ODBCデータ型SQL_TYPE_TIMESTAMPはOracleのDATEデータ型に変換されます。

Oracle Database Gateway for ODBCでサポートされないデータ型の列が表に含まれる場合、列情報はOracleデータベースに返されません。

表A-1は、ODBCデータ型をOracleデータ型にマップします。

表A-1 データ型のマッピングおよび制限事項

ODBC Oracle 基準 Oracleが大きなvarchar (32k)を使用する場合

SQL_BIGINT

NUMBER(19,0)

-

SQL_BINARY

RAW

-

SQL_CHAR

CHAR

-

SQL_DECIMAL(p,s)

NUMBER(p,s)

-

SQL_DOUBLE

FLOAT(53)

-

SQL_FLOAT

FLOAT(53)

-

SQL_INTEGER

NUMBER(10)

注意: 状況によってはINTEGER ANSIデータ型がPrecision 38にマップされることがありますが、通常はPrecision 10にマップされます。

-

SQL_INTERVAL_YEAR

INTERVAL_YEAR_TO_MONTH

-

SQL_INTERVAL_MONTH

INTERVAL_YEAR_TO_MONTH

-

SQL_INTERVAL_YEAR_TO_MONTH

INTERVAL_YEAR_TO_MONTH

-

SQL_INTERVAL_DAY

INTERVAL_DAY_TO_SECOND

-

SQL_INTERVAL_HOUR

INTERVAL_DAY_TO_SECOND

-

SQL_INTERVAL_MINUTE

INTERVAL_DAY_TO_SECOND

-

SQL_INTERVAL_SECOND

INTERVAL_DAY_TO_SECOND

-

SQL_INTERVAL_DAY_TO_HOUR

INTERVAL_DAY_TO_SECOND

-

SQL_INTERVAL_DAY_TO_MINUTE

INTERVAL_DAY_TO_SECOND

-

SQL_INTERVAL_DAY_TO_SECOND

INTERVAL_DAY_TO_SECOND

-

SQL_INTERVAL_HOUR_TO_MINUTE

INTERVAL_DAY_TO_SECOND

-

SQL_INTERVAL_HOUR_TO_SECOND

INTERVAL_DAY_TO_SECOND

-

SQL_INTERVAL_MINUTE_TO_SECOND

INTERVAL_DAY_TO_SECOND

-

SQL_LONGVARBINARY

LONG RAW

-

SQL_LONGVARCHAR

LONG

注意: ANSI SQL実装でVARCHARデータの最大長に大きな値を定義した場合、ANSI VARCHARSQL_LONGVARCHARおよびOracle LONGにマップされる可能性があります。

4000 < N < = 32740

N <= 32767

SQL_NUMERIC(p[,s])

NUMBER(p[,s])

-

SQL_REAL

FLOAT(24)

-

SQL_SMALLINT

NUMBER(5)

-

SQL_TYPE_TIME

CHAR(15)

-

SQL_TINYINT

NUMBER(3)

-

SQL_TYPE_DATE

DATE

-

SQL_TYPE_TIMESTAMP

DATE

-

SQL_VARBINARY

RAW

-

SQL_VARCHAR

VARCHAR2

N < = 4000

N <= 32767

SQL_WCHAR

NCHAR

-

SQL_WVARCHAR

NVARCHAR

-

SQL_WLONGVARCHAR

LONG

Oracle DBキャラクタ・セット= Unicodeの場合。それ以外の場合はサポートされません

SQL_BIT

NUMBER(3)

-