Method: Sequel::IBMDB::Database#execute_prepared_statement

Defined in:
lib/sequel/adapters/ibmdb.rb

#execute_prepared_statement(ps_name, opts) ⇒ Object

Execute a prepared statement named by name on the database.



233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
# File 'lib/sequel/adapters/ibmdb.rb', line 233

def execute_prepared_statement(ps_name, opts)
  args = opts[:arguments]
  ps = prepared_statement(ps_name)
  sql = ps.prepared_sql
  synchronize(opts[:server]) do |conn|
    unless conn.prepared_statements.fetch(ps_name, []).first == sql
      log_connection_yield("PREPARE #{ps_name}: #{sql}", conn){conn.prepare(sql, ps_name)}
    end
    args = args.map{|v| v.nil? ? nil : prepared_statement_arg(v)}
    log_sql = "EXECUTE #{ps_name}"
    if ps.log_sql
      log_sql += " ("
      log_sql << sql
      log_sql << ")"
    end
    begin
      stmt = log_connection_yield(log_sql, conn, args){conn.execute_prepared(ps_name, *args)}
      if defined?(yield)
        yield(stmt)
      else  
        stmt.affected
      end
    ensure
      stmt.free_result if stmt
    end
  end
end