Method: Sequel::JDBC::Database#execute

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

#execute(sql, opts = {}, &block) ⇒ Object Also known as: execute_dui

Execute the given SQL. If a block is given, if should be a SELECT statement or something else that returns rows.



176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
# File 'lib/sequel/adapters/jdbc.rb', line 176

def execute(sql, opts={}, &block)
  return call_sproc(sql, opts, &block) if opts[:sproc]
  return execute_prepared_statement(sql, opts, &block) if [Symbol, Dataset].any?{|c| sql.is_a?(c)}
  synchronize(opts[:server]) do |conn|
    stmt = conn.createStatement
    begin
      if block_given?
        yield log_yield(sql){stmt.executeQuery(sql)}
      else
        case opts[:type]
        when :ddl
          log_yield(sql){stmt.execute(sql)}
        when :insert
          log_yield(sql) do
            if requires_return_generated_keys?
              stmt.executeUpdate(sql, JavaSQL::Statement.RETURN_GENERATED_KEYS)
            else
              stmt.executeUpdate(sql)
            end
          end
          last_insert_id(conn, opts.merge(:stmt=>stmt))
        else
          log_yield(sql){stmt.executeUpdate(sql)}
        end
      end
    rescue NativeException, JavaSQL::SQLException => e
      raise_error(e)
    ensure
      stmt.close
    end
  end
end