class Sequel::Oracle::Database

  1. lib/sequel/adapters/oracle.rb
Parent: Oracle

Included modules

  1. DatabaseMethods

Constants

CONNECTION_ERROR_CODES = [ 28, 1012, 3113, 3114 ]  

ORA-00028: your session has been killed ORA-01012: not logged on ORA-03113: end-of-file on communication channel ORA-03114: not connected to ORACLE

ORACLE_TYPES = { :blob=>lambda{|b| Sequel::SQL::Blob.new(b.read)}, :clob=>lambda{|b| b.read} }  
PS_TYPES = {'string'.freeze=>String, 'integer'.freeze=>Integer, 'float'.freeze=>Float, 'decimal'.freeze=>Float, 'date'.freeze=>Time, 'datetime'.freeze=>Time, 'time'.freeze=>Time, 'boolean'.freeze=>String, 'blob'.freeze=>OCI8::BLOB}  

Attributes

conversion_procs [R]

Hash of conversion procs for this database.

Public Instance methods

connect (server)
[show source]
# File lib/sequel/adapters/oracle.rb, line 24
def connect(server)
  opts = server_opts(server)
  if opts[:database]
    dbname = opts[:host] ?              "//#{opts[:host]}#{":#{opts[:port]}" if opts[:port]}/#{opts[:database]}" : opts[:database]
  else
    dbname = opts[:host]
  end
  conn = OCI8.new(opts[:user], opts[:password], dbname, opts[:privilege])
  if prefetch_rows = opts.fetch(:prefetch_rows, 100)
    conn.prefetch_rows = typecast_value_integer(prefetch_rows)
  end
  conn.autocommit = true
  conn.non_blocking = true
  
  # The ruby-oci8 gem which retrieves oracle columns with a type of
  # DATE, TIMESTAMP, TIMESTAMP WITH TIME ZONE is complex based on the
  # ruby version (1.9.2 or later) and Oracle version (9 or later)
  # In the now standard case of 1.9.2 and Oracle 9 or later, the timezone
  # is determined by the Oracle session timezone. Thus if the user
  # requests Sequel provide UTC timezone to the application,
  # we need to alter the session timezone to be UTC
  if Sequel.application_timezone == :utc
    conn.exec("ALTER SESSION SET TIME_ZONE='-00:00'")
  end
  
  class << conn
    attr_reader :prepared_statements
  end
  conn.instance_variable_set(:@prepared_statements, {})
  
  conn
end
disconnect_connection (c)
[show source]
# File lib/sequel/adapters/oracle.rb, line 58
def disconnect_connection(c)
  c.logoff
rescue OCIInvalidHandle
  nil
end
execute (sql, opts=OPTS, &block)
[show source]
# File lib/sequel/adapters/oracle.rb, line 64
def execute(sql, opts=OPTS, &block)
  _execute(nil, sql, opts, &block)
end
execute_insert (sql, opts=OPTS)
[show source]
# File lib/sequel/adapters/oracle.rb, line 68
def execute_insert(sql, opts=OPTS)
  _execute(:insert, sql, opts)
end