# File lib/sequel/adapters/shared/oracle.rb, line 24 def create_sequence(name, opts=OPTS) self << create_sequence_sql(name, opts) end
# File lib/sequel/adapters/shared/oracle.rb, line 28 def create_trigger(*args) self << create_trigger_sql(*args) end
# File lib/sequel/adapters/shared/oracle.rb, line 32 def current_user @current_user ||= metadata_dataset.get{sys_context('USERENV', 'CURRENT_USER')} end
Oracle uses the :oracle database type
# File lib/sequel/adapters/shared/oracle.rb, line 41 def database_type :oracle end
# File lib/sequel/adapters/shared/oracle.rb, line 36 def drop_sequence(name) self << drop_sequence_sql(name) end
# File lib/sequel/adapters/shared/oracle.rb, line 45 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.as(:pc), all_constraints.as(:p), all_cons_columns.as(:fc), all_constraints.as(: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].as(:table), pc[:column_name].as(:key), fc[:column_name].as(:column), f[:constraint_name].as(: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
# File lib/sequel/adapters/shared/oracle.rb, line 79 def freeze current_user server_version @conversion_procs.freeze super end
Oracle namespaces indexes per table.
# File lib/sequel/adapters/shared/oracle.rb, line 87 def global_index_namespace? false end
The version of the Oracle server, used for determining capability.
# File lib/sequel/adapters/shared/oracle.rb, line 121 def server_version(server=nil) return @server_version if @server_version @server_version = synchronize(server) do |conn| (conn.server_version rescue nil) if conn.respond_to?(:server_version) end unless @server_version @server_version = if m = /(\d+)\.(\d+)\.?(\d+)?\.?(\d+)?/.match(fetch("select version from PRODUCT_COMPONENT_VERSION where lower(product) like 'oracle%'").single_value) (m[1].to_i*1000000) + (m[2].to_i*10000) + (m[3].to_i*100) + m[4].to_i else 0 end end @server_version end
Oracle supports deferrable constraints.
# File lib/sequel/adapters/shared/oracle.rb, line 138 def supports_deferrable_constraints? true end
Oracle supports transaction isolation levels.
# File lib/sequel/adapters/shared/oracle.rb, line 143 def supports_transaction_isolation_levels? true end
# File lib/sequel/adapters/shared/oracle.rb, line 93 def tables(opts=OPTS) m = output_identifier_meth metadata_dataset.from(:all_tables). server(opts[:server]). where(:dropped=>'NO'). exclude(:owner=>IGNORE_OWNERS). select(:table_name). map{|r| m.call(r[:table_name])} end
# File lib/sequel/adapters/shared/oracle.rb, line 112 def view_exists?(name) m = input_identifier_meth metadata_dataset.from(:all_views). exclude(:owner=>IGNORE_OWNERS). where(:view_name=>m.call(name)). count > 0 end
# File lib/sequel/adapters/shared/oracle.rb, line 103 def views(opts=OPTS) m = output_identifier_meth metadata_dataset.from(:all_views). server(opts[:server]). exclude(:owner=>IGNORE_OWNERS). select(:view_name). map{|r| m.call(r[:view_name])} end