Class: PLSQL::JDBCConnection::Cursor

Inherits:
Object
  • Object
show all
Includes:
Connection::CursorCommon
Defined in:
lib/plsql/jdbc_connection.rb

Overview

:nodoc:

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Connection::CursorCommon

#fetch_all, #fetch_hash, #fetch_hash_all

Constructor Details

#initialize(conn, result_set) ⇒ Cursor

Returns a new instance of Cursor.



194
195
196
197
198
199
200
201
202
203
# File 'lib/plsql/jdbc_connection.rb', line 194

def initialize(conn, result_set)
  @connection = conn
  @result_set = result_set
  @metadata = @result_set.
  @column_count = @metadata.getColumnCount
  @column_type_names = [nil] # column numbering starts at 1
  (1..@column_count).each do |i|
    @column_type_names << { type_name: @metadata.getColumnTypeName(i), sql_type: @metadata.getColumnType(i) }
  end
end

Instance Attribute Details

#result_setObject (readonly)

Returns the value of attribute result_set.



191
192
193
# File 'lib/plsql/jdbc_connection.rb', line 191

def result_set
  @result_set
end

#statementObject

Returns the value of attribute statement.



192
193
194
# File 'lib/plsql/jdbc_connection.rb', line 192

def statement
  @statement
end

Class Method Details

.new_from_query(conn, sql, bindvars = [], options = {}) ⇒ Object



205
206
207
208
209
210
211
212
213
214
215
216
217
# File 'lib/plsql/jdbc_connection.rb', line 205

def self.new_from_query(conn, sql, bindvars = [], options = {})
  stmt = conn.prepare_statement(sql, *bindvars)
  if prefetch_rows = options[:prefetch_rows]
    stmt.setRowPrefetch(prefetch_rows)
  end
  cursor = Cursor.new(conn, stmt.executeQuery)
  cursor.statement = stmt
  cursor
rescue
  # in case of any error close statement
  stmt.close rescue nil
  raise
end

Instance Method Details

#closeObject



235
236
237
238
# File 'lib/plsql/jdbc_connection.rb', line 235

def close
  @result_set.close
  @statement.close if @statement
end

#fetchObject



219
220
221
222
223
224
225
226
227
# File 'lib/plsql/jdbc_connection.rb', line 219

def fetch
  if @result_set.next
    (1..@column_count).map do |i|
      @connection.get_ruby_value_from_result_set(@result_set, i, @column_type_names[i])
    end
  else
    nil
  end
end

#fieldsObject



229
230
231
232
233
# File 'lib/plsql/jdbc_connection.rb', line 229

def fields
  @fields ||= (1..@column_count).map do |i|
    @metadata.getColumnName(i).downcase.to_sym
  end
end