class OCI8::BindArgumentHelper

@private
A helper class to bind arguments.

def exec(con, csr)

def exec(con, csr)
  @bind_vars.each do |key, val|
    if val.is_a? OCI8::Object::Base
      tdo = con.get_tdo_by_class(val.class)
      csr.bind_param(key, nil, :named_type_internal, tdo)
      csr[key].attributes = val
    else
      csr.bind_param(key, val ? val : '')
    end
  end
  csr.exec
  @bind_vars.each do |key, val|
    if val.is_a? OCI8::Object::Base
      val.instance_variable_set(:@attributes, csr[key].attributes)
    end
  end
end

def initialize(*args)

def initialize(*args)
  if args.length == 1 and args[0].is_a? Hash
    @arg_str = args[0].keys.collect do |key| "#{key}=>:#{key}"; end.join(', ')
    @bind_vars = args[0]
  else
    ary = []
    @bind_vars = {}
    args.each_with_index do |obj, idx|
      key = ':' + (idx + 1).to_s
      ary << key
      @bind_vars[key] = obj
    end
    @arg_str = ary.join(', ')
  end
end