module Sequel::ADO::MSSQL::DatabaseMethods

  1. lib/sequel/adapters/ado/mssql.rb
Parent: MSSQL

Methods

Public Instance

  1. execute_dui

Constants

ROWS_AFFECTED = "SELECT @@ROWCOUNT AS AffectedRows"  

Query to use to get the number of rows affected by an update or delete query.

Public Instance methods

execute_dui (sql, opts=OPTS)

Issue a separate query to get the rows modified. ADO appears to use pass by reference with an integer variable, which is obviously not supported directly in ruby, and I’m not aware of a workaround.

[show source]
# File lib/sequel/adapters/ado/mssql.rb, line 18
def execute_dui(sql, opts=OPTS)
  return super unless @opts[:provider]
  synchronize(opts[:server]) do |conn|
    begin
      log_yield(sql){conn.Execute(sql)}
      res = log_yield(ROWS_AFFECTED){conn.Execute(ROWS_AFFECTED)}
      res.getRows.transpose.each{|r| return r.shift}
    rescue ::WIN32OLERuntimeError => e
      raise_error(e)
    end
  end
end