Method: Sequel::JDBC::Database#call_sproc

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

#call_sproc(name, opts = OPTS) ⇒ Object

Execute the given stored procedure with the give name. If a block is given, the stored procedure should return rows.



187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
# File 'lib/sequel/adapters/jdbc.rb', line 187

def call_sproc(name, opts = OPTS)
  args = opts[:args] || []
  sql = "{call #{name}(#{args.map{'?'}.join(',')})}"
  synchronize(opts[:server]) do |conn|
    begin
      cps = conn.prepareCall(sql)

      i = 0
      args.each{|arg| set_ps_arg(cps, arg, i+=1)}

      if defined?(yield)
        yield log_connection_yield(sql, conn){cps.executeQuery}
      else
        log_connection_yield(sql, conn){cps.executeUpdate}
        if opts[:type] == :insert
          last_insert_id(conn, opts)
        end
      end
    rescue *DATABASE_ERROR_CLASSES => e
      raise_error(e)
    ensure
      cps.close if cps
    end
  end
end