module Sequel::Oracle::DatabaseMethods

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

Constants

AUTOINCREMENT = ''.freeze  
DATABASE_ERROR_REGEXPS = { /unique constraint .+ violated/ => UniqueConstraintViolation, /integrity constraint .+ violated/ => ForeignKeyConstraintViolation, /check constraint .+ violated/ => CheckConstraintViolation, /cannot insert NULL into|cannot update .+ to NULL/ => NotNullConstraintViolation, /can't serialize access for this transaction/ => SerializationFailure, }.freeze  
TEMPORARY = 'GLOBAL TEMPORARY '.freeze  
TRANSACTION_ISOLATION_LEVELS = {:uncommitted=>'READ COMMITTED'.freeze, :committed=>'READ COMMITTED'.freeze, :repeatable=>'SERIALIZABLE'.freeze, :serializable=>'SERIALIZABLE'.freeze}  

Attributes

Public Instance methods

create_sequence (name, opts=OPTS)
[show source]
# File lib/sequel/adapters/shared/oracle.rb, line 13
def create_sequence(name, opts=OPTS)
  self << create_sequence_sql(name, opts)
end
create_trigger (*args)
[show source]
# File lib/sequel/adapters/shared/oracle.rb, line 17
def create_trigger(*args)
  self << create_trigger_sql(*args)
end
current_user ()
[show source]
# File lib/sequel/adapters/shared/oracle.rb, line 21
def current_user
  @current_user ||= metadata_dataset.get{sys_context('USERENV', 'CURRENT_USER')}
end
database_type ()

Oracle uses the :oracle database type

[show source]
# File lib/sequel/adapters/shared/oracle.rb, line 30
def database_type
  :oracle
end
drop_sequence (name)
[show source]
# File lib/sequel/adapters/shared/oracle.rb, line 25
def drop_sequence(name)
  self << drop_sequence_sql(name)
end
foreign_key_list (table, opts=OPTS)
[show source]
# File lib/sequel/adapters/shared/oracle.rb, line 34
def foreign_key_list(table, opts=OPTS)
  m = output_identifier_meth
  im = input_identifier_meth
  schema, table = schema_and_table(table)
  ds = metadata_dataset.
    from(:all_cons_columns___pc, :all_constraints___p, :all_cons_columns___fc, :all_constraints___f).
    where(:f__table_name=>im.call(table), :f__constraint_type=>'R', :p__owner=>:f__r_owner, :p__constraint_name=>:f__r_constraint_name, :pc__owner=>:p__owner, :pc__constraint_name=>:p__constraint_name, :pc__table_name=>:p__table_name, :fc__owner=>:f__owner, :fc__constraint_name=>:f__constraint_name, :fc__table_name=>:f__table_name, :fc__position=>:pc__position).
    select(:p__table_name___table, :pc__column_name___key, :fc__column_name___column, :f__constraint_name___name).
    order(:table, :fc__position)
  ds = ds.where(:f__schema_name=>im.call(schema)) if schema

  fks = {}
  ds.each do |r|
    if fk = fks[r[:name]]
      fk[:columns] << m.call(r[:column])
      fk[:key] << m.call(r[:key])
    else
      fks[r[:name]] = {:name=>m.call(r[:name]), :columns=>[m.call(r[:column])], :table=>m.call(r[:table]), :key=>[m.call(r[:key])]}
    end
  end
  fks.values
end
global_index_namespace? ()

Oracle namespaces indexes per table.

[show source]
# File lib/sequel/adapters/shared/oracle.rb, line 58
def global_index_namespace?
  false
end
supports_deferrable_constraints? ()

Oracle supports deferrable constraints.

[show source]
# File lib/sequel/adapters/shared/oracle.rb, line 78
def supports_deferrable_constraints?
  true
end
supports_transaction_isolation_levels? ()

Oracle supports transaction isolation levels.

[show source]
# File lib/sequel/adapters/shared/oracle.rb, line 83
def supports_transaction_isolation_levels?
  true
end
tables (opts=OPTS)
[show source]
# File lib/sequel/adapters/shared/oracle.rb, line 62
def tables(opts=OPTS)
  m = output_identifier_meth
  metadata_dataset.from(:tabs).server(opts[:server]).select(:table_name).map{|r| m.call(r[:table_name])}
end
view_exists? (name)
[show source]
# File lib/sequel/adapters/shared/oracle.rb, line 72
def view_exists?(name) 
  m = input_identifier_meth
  metadata_dataset.from(:tab).filter(:tname =>m.call(name), :tabtype => 'VIEW').count > 0 
end
views (opts=OPTS)
[show source]
# File lib/sequel/adapters/shared/oracle.rb, line 67
def views(opts=OPTS) 
  m = output_identifier_meth
  metadata_dataset.from(:tab).server(opts[:server]).select(:tname).filter(:tabtype => 'VIEW').map{|r| m.call(r[:tname])}
end