module Sequel::ADO::MSSQL::DatabaseMethods

Public Instance Methods

execute_dui(sql, opts=OPTS) click to toggle source

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

Calls superclass method
# File lib/sequel/adapters/ado/mssql.rb, line 13
def execute_dui(sql, opts=OPTS)
  return super unless @opts[:provider]
  synchronize(opts[:server]) do |conn|
    begin
      log_connection_yield(sql, conn){conn.Execute(sql)}
      rows_affected_sql = "SELECT @@ROWCOUNT AS AffectedRows"
      res = log_connection_yield(rows_affected_sql, conn){conn.Execute(rows_affected_sql)}
      res.getRows.transpose.each{|r| return r.shift}
    rescue ::WIN32OLERuntimeError => e
      raise_error(e)
    end
  end
end

Private Instance Methods

begin_transaction(conn, opts=OPTS) click to toggle source

The ADO adapter's default provider doesn't support transactions, since it creates a new native connection for each query. So Sequel only attempts to use transactions if an explicit :provider is given.

Calls superclass method
# File lib/sequel/adapters/ado/mssql.rb, line 32
def begin_transaction(conn, opts=OPTS)
  super if @opts[:provider]
end
commit_transaction(conn, opts=OPTS) click to toggle source
# File lib/sequel/adapters/ado/mssql.rb, line 36
def commit_transaction(conn, opts=OPTS)
  super if @opts[:provider]
end
rollback_transaction(conn, opts=OPTS) click to toggle source
Calls superclass method
# File lib/sequel/adapters/ado/mssql.rb, line 40
def rollback_transaction(conn, opts=OPTS)
  super if @opts[:provider]
end