module Db2Query::DbStatements
Public Instance Methods
exec_query(query, args = [])
click to toggle source
# File lib/db2_query/db_statements.rb, line 41 def exec_query(query, args = []) sql, binds, args = query.exec_query_arguments(args) log(sql, binds, args) do pool do |client| stmt = client.run(sql, *args) columns = stmt.columns.values.map { |col| col.name.downcase } rows = stmt.to_a Db2Query::Result.new(columns, rows, query) ensure stmt.drop unless stmt.nil? end end end
execute(sql, args = [])
click to toggle source
# File lib/db2_query/db_statements.rb, line 28 def execute(sql, args = []) pool do |client| client.do(sql, *args) end end
query(sql)
click to toggle source
# File lib/db2_query/db_statements.rb, line 5 def query(sql) pool do |client| stmt = client.run(sql) stmt.to_a ensure stmt.drop unless stmt.nil? end end
query_rows(sql)
click to toggle source
# File lib/db2_query/db_statements.rb, line 14 def query_rows(sql) query(sql) end
query_value(sql)
click to toggle source
# File lib/db2_query/db_statements.rb, line 18 def query_value(sql) rows = query(sql) row = rows.first row && row.first end
query_values(sql)
click to toggle source
# File lib/db2_query/db_statements.rb, line 24 def query_values(sql) query(sql).map(&:first) end
raw_query(sql, args = [])
click to toggle source
# File lib/db2_query/db_statements.rb, line 34 def raw_query(sql, args = []) pool do |client| stmt = client.run(sql, *args) raw_result(stmt) end end
reset_id_sequence!(table_name)
click to toggle source
# File lib/db2_query/db_statements.rb, line 55 def reset_id_sequence!(table_name) next_val = max_id(table_name) + 1 execute <<-SQL ALTER TABLE #{table_name} ALTER COLUMN ID RESTART WITH #{next_val} SET INCREMENT BY 1 SET NO CYCLE SET CACHE 500 SET NO ORDER; SQL end
Private Instance Methods
max_id(table_name)
click to toggle source
# File lib/db2_query/db_statements.rb, line 69 def max_id(table_name) query_value("SELECT COALESCE(MAX (ID),0) FROM #{table_name}") end
raw_result(stmt)
click to toggle source
# File lib/db2_query/db_statements.rb, line 73 def raw_result(stmt) columns = stmt.columns.values.map { |col| col.name.downcase } stmt.to_a.map do |row| index, hash = [0, {}] while index < columns.length hash[columns[index].to_sym] = row[index] index += 1 end hash end ensure stmt.drop unless stmt.nil? end