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
13 def execute_dui(sql, opts=OPTS)
14   return super unless @opts[:provider]
15   synchronize(opts[:server]) do |conn|
16     begin
17       log_connection_yield(sql, conn){conn.Execute(sql)}
18       rows_affected_sql = "SELECT @@ROWCOUNT AS AffectedRows"
19       res = log_connection_yield(rows_affected_sql, conn){conn.Execute(rows_affected_sql)}
20       res.getRows.transpose.each{|r| return r.shift}
21     rescue ::WIN32OLERuntimeError => e
22       raise_error(e)
23     end
24   end
25 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
32 def begin_transaction(conn, opts=OPTS)
33   super if @opts[:provider]
34 end
commit_transaction(conn, opts=OPTS) click to toggle source
   # File lib/sequel/adapters/ado/mssql.rb
36 def commit_transaction(conn, opts=OPTS)
37   super if @opts[:provider]
38 end
rollback_transaction(conn, opts=OPTS) click to toggle source
Calls superclass method
   # File lib/sequel/adapters/ado/mssql.rb
40 def rollback_transaction(conn, opts=OPTS)
41   super if @opts[:provider]
42 end