class OCI8::Cursor

def define_columns

def define_columns
  # http://docs.oracle.com/cd/E11882_01/appdev.112/e10646/ociaahan.htm#sthref5494
  num_cols = attr_get_ub4(18) # OCI_ATTR_PARAM_COUNT(18)
  @column_metadata = 1.upto(num_cols).collect do |i|
    __paramGet(i)
  end
  if @define_handles.size == 0
    use_array_fetch = @@use_array_fetch
    @column_metadata.each do |md|
      case md.data_type
      when :clob, :blob, :bfile
        # Rows prefetching doesn't work for CLOB, BLOB and BFILE.
        # Use array fetching to get more than one row in a network round trip.
        use_array_fetch = true
      end
    end
    @fetch_array_size = @prefetch_rows if use_array_fetch
  end
  @column_metadata.each_with_index do |md, i|
    define_one_column(i + 1, md) unless @define_handles[i]
  end
  num_cols
end