Module: Sequel::ADO::MSSQL::DatabaseMethods
- Includes:
- MSSQL::DatabaseMethods
- Defined in:
- lib/sequel/adapters/ado/mssql.rb
Constant Summary
Constants included from MSSQL::DatabaseMethods
MSSQL::DatabaseMethods::FOREIGN_KEY_ACTION_MAP
Instance Attribute Summary
Attributes included from MSSQL::DatabaseMethods
Instance Method Summary collapse
-
#execute_dui(sql, opts = OPTS) ⇒ Object
Issue a separate query to get the rows modified.
Methods included from MSSQL::DatabaseMethods
#call_mssql_sproc, #database_type, #foreign_key_list, #freeze, #global_index_namespace?, #indexes, #server_version, #supports_partial_indexes?, #supports_savepoints?, #supports_transaction_isolation_levels?, #supports_transactional_ddl?, #tables, #views
Instance Method Details
#execute_dui(sql, opts = OPTS) ⇒ Object
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.
13 14 15 16 17 18 19 20 21 22 23 24 25 |
# 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 |