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 |