OCI8::Metadata::Column

列の情報

(new in 1.0.0 without rc)

クラスメソッド

クラスメソッドはなし。

このオブジェクトは以下のメソッドにより作成されます。

インスタンスメソッド

name

列名

type_string

列定義を文字列で戻す。

 con = OCI8.new('username/password')
 colinfo = con.describe_table('tab').columns
 colinfo[0].type_string #=> "VARCHAR2(30) NOT NULL"
 colinfo[1].type_string #=> "VARCHAR2(7)"
 colinfo[2].type_string #=> "NUMBER"

data_type

列のデータ型を Symbol で戻す。

Oracle typedata_type
CHAR, NCHAR:char
VARCHAR2, NVARCHAR2:varchar2
RAW:raw
CLOB, NCLOB:clob
BLOB:blob
BFILE:bfile
NUMBER, FLOAT:number
BINARY_FLOAT:binary_float
BINARY_DOUBLE:binary_double
DATE:date
TIMESTAMP:timestamp
TIMESTAMP WITH TIME ZONE:timestamp_tz
TIMESTAMP WITH LOCAL TIME ZONE:timestamp_ltz
INTERVAL YEAR TO MONTH:interval_ym
INTERVAL DAY TO SECOND:interval_ds

charset_form

キャラクタセットの種類(デフォルトか、各国語か)

Oracle typechar_form
CHAR(n):implicit
VARCHAR2(n):implicit
CHAR(n CHAR):implicit
VARCHAR2(n CHAR):implicit
NCHAR(n):nchar
NVARCHAR2(n):nchar
Othersnil

nullable?

NULL値を含める場合は true, それ以外は false

char_used?

長さの指定が文字単位の場合は true, それ以外は false.

Oracle typechar_used?
CHAR(n)false
VARCHAR2(n)false
CHAR(n CHAR)true
VARCHAR2(n CHAR)true
NCHAR(n)true
NVARCHAR2(n)true

char_size

文字列データ型の長さ。char_used? が true の場合は文字単位、false の場合はバイト単位。

Oracle typechar_size
CHAR(n)n
VARCHAR2(n)n
CHAR(n CHAR)n
VARCHAR2(n CHAR)n
NCHAR(n)n
NVARCHAR2(n)n

data_size

バイト単位でのデータの最大長。

予想ですが、クライアント側での長さではなくて、Oracle内部で使用するデータの最大長と思われる。

Oracle tyepdata_size
CHAR(n), VARCHAR2(n)n
CHAR(n CHAR), VARCHAR2(n CHAR)n の整数倍(私の環境では4倍)
NCHAR(n), NVARCHAR2(n)n の整値倍(私の環境では2倍)
NUMBER, FLOAT22
BINARY_FLOAT4
BINARY_DOUBLE8
DATE7
TIMESTAMP11
TIMESTAMP WITH TIME ZONE13
TIMESTAMP WITH LOCAL TIME ZONE11

precision

数値型の精度。NUMBER の場合10進数での桁数、FLOATの場合は 2進数での桁数。FLOATの精度に 0.30103 を掛けるとNUMBERでの精度になります。この値が 0 のときは、精度と小数点以下桁数の両方共無指定の NUMBER 型となります。

Oracle typeprecision
NUMBER0
NUMBER(n)n
NUMBER(m, n)m
FLOAT126
FLOAT(n)n

scale

小数点以下の桁数。precision が 0以外で scale が -127 のときは FLOAT。それ以外は NUMBER。

Oracle typescale
NUMBER-127 or 0
NUMBER(n)0
NUMBER(m, n)n
FLOAT-127
FLOAT(n)-127

fsprecision

小数秒精度(fractional seconds precision)

Oracle typefsprecision
TIMEPTAMP(n)n
TIMESTAMP(n) WITH TIME ZONEn
TIMESTAMP(n) WITH LOCAL TIME ZONEn
INTERVAL DAY(m) TO SECOND(n)n

lfprecision

先行フィールド精度(leading field precision)

Oracle typelfprecision
INTERVAL YEAR(n) TO MONTHn
INTERVAL DAY(m) TO SECOND(n)m
Last modified:2007/11/25 16:53:30
Keyword(s):
References:[SideMenu] [ruby-oci8 API] [OCI8::Metadata::Table] [OCI8::Cursor] [OCI8::Metadata::View]