module Sequel::ADO::MSSQL::DatabaseMethods

Constants

ROWS_AFFECTED

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

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 obviously not supported directly in ruby, and I'm not aware of a workaround.

Calls superclass method
# File lib/sequel/adapters/ado/mssql.rb, line 19
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)}
      res = log_connection_yield(ROWS_AFFECTED, conn){conn.Execute(ROWS_AFFECTED)}
      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 37
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 41
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 45
def rollback_transaction(conn, opts=OPTS)
  super if @opts[:provider]
end