Module: ActiveRecord::Bulkoperation::BatchUpdate::InstanceMethods
- Included in:
- ActiveRecord::Base
- Defined in:
- lib/activerecord_bulkoperation/connection_adapters/oracle_enhanced/oci_connection.rb,
lib/activerecord_bulkoperation/connection_adapters/oracle_enhanced/jdbc_connection.rb
Instance Method Summary collapse
-
#enhanced_write_lobs ⇒ Object
:nodoc:.
- #execute_batch_update(sql, types, values, optimistic = true) ⇒ Object
Instance Method Details
#enhanced_write_lobs ⇒ Object
:nodoc:
8 9 10 |
# File 'lib/activerecord_bulkoperation/connection_adapters/oracle_enhanced/jdbc_connection.rb', line 8 def enhanced_write_lobs #:nodoc: # disable this feature for jruby end |
#execute_batch_update(sql, types, values, optimistic = true) ⇒ Object
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
# File 'lib/activerecord_bulkoperation/connection_adapters/oracle_enhanced/oci_connection.rb', line 8 def execute_batch_update(sql, types, values, optimistic = true) fail ArgumentError.new('String expected') unless sql.is_a? String types = [types] unless types.is_a? Array fail ArgumentError.new('Array of Symbol expected') unless types.select { |i| not i.is_a? Symbol }.empty? fail ArgumentError.new('Array expected') unless values.is_a? Array values = [values] unless values.select { |i| not i.is_a? Array }.empty? return 0 if values.empty? unless values.select { |i| not i.count == types.count }.empty? fail ArgumentError.new('types.count must be equal to arr.count for every arr in values') end unless connection.adapter_name == 'Oracle' || connection.adapter_name == 'OracleEnhanced' fail "Operation is provided only on Oracle connections. (adapter_name is #{connection.adapter_name})" end oci_conn = connection.raw_connection if connected? fail 'Unable to access the raw OCI connection.' unless oci_conn cursor = oci_conn.parse(sql) fail "Unable to obtain cursor for this statement:\n#{sql}." unless cursor if check_date_homogeneously(types, values) affected_rows = execute_batch_update_array(cursor, sql, types, values, optimistic) else affected_rows = execute_batch_update_single(cursor, sql, types, values, optimistic) end affected_rows end |