4.2.3  ORACLEのデータ型との対応関係

外部サーバがORACLEの場合,マッピング時のデータ型の対応関係を,表4-6表4-7および表4-8に示します。

表4-6 データ型の対応関係(外部サーバがORACLEの場合)(1/3)

ORACLEのデータ型
(外部のDB)
 
HiRDBのデータ型
SMALLINTINTEGERDECIMAL(m,n)
1≦m≦29,0≦n≦m
SMALLFLTまたはREAL※1FLOATまたはDOUBLE PRECISION※1
NUMBER(p,s)
p:精度
s:位取り
s=0または省略p=*または省略※9※2※3※6※7
s=0,省略,または-28≦s≦-11≦p-s≦4※4※4※6※7
5≦p-s≦9 ※5※6※7
10≦p-s≦29  ※6※7
30≦p-s≦38   
1≦s≦291≦p≦29  ※7※8
p≧30   
s≧30またはs≦-29   
CHAR(n)1≦n≦255     
256≦n≦2,000     
VARCHAR2(n)1≦n≦255     
256≦n≦4,000     
NCHAR(n)(2バイト固定幅の各国文字セットの場合)1≦n≦127     
128≦n≦1,000     
NCHAR(n)(可変幅の各国文字セットの場合)1≦n≦255     
256≦n≦2,000     
NVARCHAR2(n)(2バイト固定幅の各国文字セットの場合)1≦n≦127     
128≦n≦2,000     
NVARCHAR2(n)(可変幅の各国文字セットの場合)1≦n≦255     
256≦n≦4,000     
LONG(n)1≦n≦255     
256≦n≦32,000     
32,001≦n≦2,000,000,000     
DATE     
RAW(n)1≦n≦255     
256≦n≦2,000     
LONG
RAW(n)
1≦n≦255     
256≦n≦32,000     
32,001≦n≦
2,000,000,000
     
ROWID     
MLSLABEL     
CLOB(n)1≦n≦
1,999,999,999
     
2,000,000,000≦n
≦4,000,000,000
     
NCLOB(n)1≦n≦
1,999,999,999
     
2,000,000,000≦n
≦4,000,000,000
     
BLOB(n)1≦n≦
1,999,999,999
     
2,000,000,000≦n
≦4,000,000,000
     
(凡例)
◎:推奨するデータ型です。
○:マッピングできるデータ型です。
空白:マッピングできないデータ型です。
注※1
表現できる値の精度が落ちる場合があります。HiRDBでの値の範囲および精度は,ハードウェアに依存します。
注※2
-32,768~32,767の範囲に限ります。
注※3
-2,147,483,648~2,147,483,647の範囲に限ります。
注※4
-9,999~9,999の範囲に限ります。
注※5
-999,999,999~999,999,999の範囲に限ります。
注※6
s<0の場合,DECIMAL(m,n)をDECIMAL(p-s,0)としてください。また,この場合,下(-s)けたは0となります。s=0の場合,または省略した場合,DECIMAL(m,n)をDECIMAL(p,0)としてください。
例:NUMBER(4,-3)=nnnn000.の場合,HiRDBではDECIMAL(7,0)となります。
注※7
整数部のけた数がHiRDBのデータ型より小さい場合,外部サーバから行を取得できません。
小数部のけた数がHiRDBのデータ型より小さい場合,HiRDBのデータ型の小数部のけた数に合わせて残りの小数部を切り捨てて取得します。
それ以外の場合,整数部または小数部のけた数がHiRDBのデータ型より大きいときは,HiRDBのデータ型のけた数に合わせて拡張した部分に,0を補って取得します。
注※8
p<sの場合,DECIMAL(m,n)をDECIMAL(s,s)としてください。また,この場合,小数点以下(s-p)けたは0となります。p≧sの場合,DECIMAL(m,n)をDECIMAL(p,s)としてください。
例:NUMBER(4,5)=0.01234の場合,HiRDBではDECIMAL(5,5)となります。
注※9
用途に応じて,マッピングするHiRDBのデータ型を決定してください。DECIMAL型とマッピングする場合は,外部サーバで使用しているデータの精度(p),および位取り(s)に従って,外部表定義の精度(m)および位取り(n)の値を指定してください。

 

表4-7 データ型の対応関係(外部サーバがORACLEの場合)(2/3)

ORACLEのデータ型
(外部のDB)
 
HiRDBのデータ型
CHAR(n)
1≦n≦255
VARCHAR(n)
1≦n≦255
MCHAR(n)
1≦n≦255
MVARCHAR(n)
1≦n≦255
NCHAR(n)
1≦n≦127
NVARCHAR(n)
1≦n≦127
NUMBER(p,s)
p:精度
s:位取り
s=0または省略p=*または省略      
s=0,省略,または-28≦s≦-11≦p-s≦4      
5≦p-s≦9      
10≦p-s≦29      
30≦p-s≦38      
1≦s≦291≦p≦29      
p≧30      
s≧30またはs≦-29      
CHAR(n)1≦n≦255※1※6 ※2※6   
256≦n≦2,000      
VARCHAR2(n)1≦n≦255 ※1※6 ※2※6  
256≦n≦4,000      
NCHAR(n)(2バイト固定幅の各国文字セットの場合)1≦n≦127    ※6 
128≦n≦1,000      
NCHAR(n)(可変幅の各国文字セットの場合)1≦n≦255    ※3※6 
256≦n≦2,000      
NVARCHAR2(n)(2バイト固定幅の各国文字セットの場合)1≦n≦127     ※6
128≦n≦2,000      
NVARCHAR2(n)(可変幅の各国文字セットの場合)1≦n≦255     ※6
256≦n≦4,000      
LONG(n)1≦n≦255   ※1※5※6 ※2※5※6
256≦n≦32,000      
32,001≦n≦
2,000,000,000
      
DATE※4※6     
RAW(n)1≦n≦255      
256≦n≦2,000      
LONG
RAW(n)
1≦n≦255      
256≦n≦32,000      
32,001≦n≦
2,000,000,000
      
ROWID      
MLSLABEL      
CLOB(n)1≦n≦
1,999,999,999
      
2,000,000,000≦n
≦4,000,000,000
      
NCLOB(n)1≦n≦
1,999,999,999
      
2,000,000,000≦n
≦4,000,000,000
      
BLOB(n)1≦n≦
1,999,999,999
      
2,000,000,000≦n
≦4,000,000,000
      
(凡例)
◎:推奨するデータ型です。
○:マッピングできるデータ型です。
△:外部サーバ情報定義のpd_hb_use_describeオペランドにYを指定した場合,マッピングできるデータ型となります。
空白:マッピングできないデータ型です。
外部サーバ上の256バイト以上の列に対して,255バイトの文字列型を定義した場合,255バイトまでのデータしか取得できません。
注※1
データに全角文字を含まない場合,推奨データ型となります。
注※2
データに全角文字を含む場合,推奨データ型となります。
注※3
外部表上の列の定義データ長は,n÷2としてください。
注※4
CHAR(19)にマッピングしてください。日付,日時の文字列の形式は,'YYYY-MM-DD-hh:mm:ss'になります。該当する列に比較や演算をした場合,外部のDBでエラーとなることがあります。
注※5
該当する列を次の個所に指定すると,外部のDBでエラーとなることがあります。
  • GROUP BY句
  • ORDER BY句
  • DISTINCT演算子
  • 関数
  • 条件
注※6
指定がない場合は,外部サーバとHiRDBのデータ型の定義長を同じにしてください。
HiRDBのデータ型の定義長(長さnバイト:n≦255)が外部サーバのデータ型の実長よりも短い場合,先頭のnバイトだけを取得します。
また,長い場合,HiRDBが固定長のデータ型のときは左詰めに挿入され,余りの部分に空白(各国文字列の場合は全角空白,文字列または混在文字列の場合は半角空白)を設定して取得します。
HiRDBが可変長のデータ型の場合,そのまま取得します。

 

表4-8 データ型の対応関係(外部サーバがORACLEの場合)(3/3)

ORACLEのデータ型
(外部のDB)
 
HiRDBのデータ型
DATETIMETIMESTAMP(p)
p=0,2,4,または6
INTERVAL YEAR TO DAYINTERVAL HOUR TO SECONDBINARY(n)
1≦n≦255
NUMBER(p,s)
p:精度
s:位取り
s=0または省略p=*または省略      
s=0,省略,または-28≦s≦-11≦p-s≦4      
5≦p-s≦9      
10≦p-s≦29      
30≦p-s≦38      
1≦s≦291≦p≦29      
p≧30      
s≧30またはs≦-29      
CHAR(n)1≦n≦255      
256≦n≦2,000      
VARCHAR2(n)1≦n≦255      
256≦n≦4,000      
NCHAR(n)(2バイト固定幅の各国文字セットの場合)1≦n≦127      
128≦n≦1,000      
NCHAR(n)(可変幅の各国文字セットの場合)1≦n≦255      
256≦n≦2,000      
NVARCHAR2(n)(2バイト固定幅の各国文字セットの場合)1≦n≦127      
128≦n≦2,000      
NVARCHAR2(n)(可変幅の各国文字セットの場合)1≦n≦255      
256≦n≦4,000      
LONG(n)1≦n≦255      
256≦n≦32,000      
32,001≦n≦
2,000,000,000
      
DATE※1 ※2   
RAW(n)1≦n≦255      
256≦n≦2,000      
LONG RAW(n)1≦n≦255     ※3※4
256≦n≦32,000      
32,001≦n≦
2,000,000,000
      
ROWID      
MLSLABEL      
CLOB(n)1≦n≦
1,999,999,999
      
2,000,000,000≦n
≦4,000,000,000
      
NCLOB(n)1≦n≦
1,999,999,999
      
2,000,000,000≦n
≦4,000,000,000
      
BLOB(n)1≦n≦
1,999,999,999
      
2,000,000,000≦n
≦4,000,000,000
      
(凡例)
◎:推奨するデータ型です。
空白:マッピングできないデータ型です。
注※1
時分秒は切り捨てられます。
注※2
TIMESTAMP型にマッピングする場合は,精度pに0を指定するか,または省略してください。
注※3
BINARY型にマッピングする場合は,ORACLEに格納されているデータの中で,最も長いデータの実長(バイト)以上の値を指定してください。
注※4
指定がない場合は,外部サーバとHiRDBのデータ型の定義長を同じにしてください。
HiRDBのデータ型の定義長(長さnバイト:n≦255)が外部サーバのデータ型の実長よりも短い場合,先頭のnバイトだけを取得します。
また,長い場合,HiRDBが固定長のデータ型のときは左詰めに挿入され,余りの部分に空白(各国文字列の場合は全角空白,文字列または混在文字列の場合は半角空白)を設定して取得します。
HiRDBが可変長のデータ型の場合,そのまま取得します。