class OCI8::Metadata::Base

Abstract super class for Metadata classes.

def __anydata(idx); raise NotImplementedError; end

def __anydata(idx); raise NotImplementedError; end

def __boolean(idx)

def __boolean(idx)
  __ub1(idx) == 0 ? false : true
end

def __charset_form

def __charset_form
  case __ub1(OCI_ATTR_CHARSET_FORM)
  when 1; :implicit # for CHAR, VARCHAR2, CLOB w/o a specified set
  when 2; :nchar    # for NCHAR, NCHAR VARYING, NCLOB
  when 3; :explicit # for CHAR, etc, with "CHARACTER SET ..." syntax
  when 4; :flexible # for PL/SQL "flexible" parameters
  when 5; :lit_null # for typecheck of NULL and empty_clob() lits
  end
end

def __data_type

def __data_type
  return @data_type if defined? @data_type
  entry = DATA_TYPE_MAP[__ub2(OCI_ATTR_DATA_TYPE)]
  type = entry.nil? ? __ub2(OCI_ATTR_DATA_TYPE) : entry[0]
  type = type.call(self) if type.is_a? Proc
  @data_type = type
end

def __duration

def __duration
  case __ub2(OCI_ATTR_DURATION)
  when OCI_DURATION_SESSION
    :session
  when OCI_DURATION_TRANS
    :transaction
  when OCI_DURATION_NULL
    nil
  end
end

def __type_string

def __type_string
  entry = DATA_TYPE_MAP[__ub2(OCI_ATTR_DATA_TYPE)]
  type = entry.nil? ? "unknown(#{__ub2(OCI_ATTR_DATA_TYPE)})" : entry[1]
  type = type.call(self) if type.is_a? Proc
  if respond_to?(:nullable?) && !nullable?
    type + " NOT NULL"
  else
    type
  end
end

def __typecode(idx)

def __typecode(idx)
  case __ub2(idx)
  when 110; :ref         # OCI_TYPECODE_REF
  when  12; :date        # OCI_TYPECODE_DATE
  when  27; :signed8     # OCI_TYPECODE_SIGNED8
  when  28; :signed16    # OCI_TYPECODE_SIGNED16
  when  29; :signed32    # OCI_TYPECODE_SIGNED32
  when  21; :real        # OCI_TYPECODE_REAL
  when  22; :double      # OCI_TYPECODE_DOUBLE
  when 100; :binary_float  # OCI_TYPECODE_BFLOAT
  when 101; :binary_double # OCI_TYPECODE_BDOUBLE
  when   4; :float       # OCI_TYPECODE_FLOAT
  when   2; :number      # OCI_TYPECODE_NUMBER
  when   7; :decimal     # OCI_TYPECODE_DECIMAL
  when  23; :unsigned8   # OCI_TYPECODE_UNSIGNED8
  when  25; :unsigned16  # OCI_TYPECODE_UNSIGNED16
  when  26; :unsigned32  # OCI_TYPECODE_UNSIGNED32
  when 245; :octet       # OCI_TYPECODE_OCTET
  when 246; :smallint    # OCI_TYPECODE_SMALLINT
  when   3; :integer     # OCI_TYPECODE_INTEGER
  when  95; :raw         # OCI_TYPECODE_RAW
  when  32; :ptr         # OCI_TYPECODE_PTR
  when   9; :varchar2    # OCI_TYPECODE_VARCHAR2
  when  96; :char        # OCI_TYPECODE_CHAR
  when   1; :varchar     # OCI_TYPECODE_VARCHAR
  when 105; :mlslabel    # OCI_TYPECODE_MLSLABEL
  when 247; :varray      # OCI_TYPECODE_VARRAY
  when 248; :table       # OCI_TYPECODE_TABLE
  when 108; :named_type  # OCI_TYPECODE_OBJECT
  when  58; :opaque      # OCI_TYPECODE_OPAQUE
  when 122; :named_collection # OCI_TYPECODE_NAMEDCOLLECTION
  when 113; :blob        # OCI_TYPECODE_BLOB
  when 114; :bfile       # OCI_TYPECODE_BFILE
  when 112; :clob        # OCI_TYPECODE_CLOB
  when 115; :cfile       # OCI_TYPECODE_CFILE
  when 185; :time        # OCI_TYPECODE_TIME
  when 186; :time_tz     # OCI_TYPECODE_TIME_TZ
  when 187; :timestamp   # OCI_TYPECODE_TIMESTAMP
  when 188; :timestamp_tz # OCI_TYPECODE_TIMESTAMP_TZ
  when 232; :timestamp_ltz # OCI_TYPECODE_TIMESTAMP_LTZ
  when 189; :interval_ym # OCI_TYPECODE_INTERVAL_YM
  when 190; :interval_ds # OCI_TYPECODE_INTERVAL_DS
  when 104; :urowid      # OCI_TYPECODE_UROWID
  #when 228; :otmfirst   # OCI_TYPECODE_OTMFIRST
  #when 320; :otmlast    # OCI_TYPECODE_OTMLAST
  #when 228; :sysfirst   # OCI_TYPECODE_SYSFIRST
  #when 235; :syslast    # OCI_TYPECODE_SYSLAST
  when 266; :pls_integer # OCI_TYPECODE_PLS_INTEGER
  end
end

def inspect # :nodoc:

:nodoc:
def inspect # :nodoc:
  "#<#{self.class.name}:(#{obj_id}) #{obj_schema}.#{obj_name}>"
end

def num_params

don't use this. The number of parameters
def num_params
  __ub2(OCI_ATTR_NUM_PARAMS)
end

def obj_id

object or schema ID
def obj_id
  __ub4(OCI_ATTR_OBJ_ID)
end

def obj_name

database name or object name in a schema
def obj_name
  __text(OCI_ATTR_OBJ_NAME)
end

def obj_schema

schema name where the object is located
def obj_schema
  __text(OCI_ATTR_OBJ_SCHEMA)
end

def timestamp

The timestamp of the object
def timestamp
  __oradate(OCI_ATTR_TIMESTAMP)
end