Class | Sequel::TinyTDS::Database |
In: |
lib/sequel/adapters/tinytds.rb
|
Parent: | Sequel::Database |
Transfer the :host and :user options to the :dataserver and :username options.
# File lib/sequel/adapters/tinytds.rb, line 12 12: def connect(server) 13: opts = server_opts(server) 14: opts[:username] = opts[:user] 15: set_mssql_unicode_strings 16: TinyTds::Client.new(opts) 17: end
Execute the given sql on the server. If the :return option is present, its value should be a method symbol that is called on the TinyTds::Result object returned from executing the sql. The value of such a method is returned to the caller. Otherwise, if a block is given, it is yielded the result object. If no block is given and a :return is not present, nil is returned.
# File lib/sequel/adapters/tinytds.rb, line 25 25: def execute(sql, opts={}) 26: synchronize(opts[:server]) do |c| 27: begin 28: m = opts[:return] 29: r = nil 30: if (args = opts[:arguments]) && !args.empty? 31: types = [] 32: values = [] 33: args.each_with_index do |(k, v), i| 34: v, type = ps_arg_type(v) 35: types << "@#{k} #{type}" 36: values << "@#{k} = #{v}" 37: end 38: case m 39: when :do 40: sql = "#{sql}; SELECT @@ROWCOUNT AS AffectedRows" 41: single_value = true 42: when :insert 43: sql = "#{sql}; SELECT CAST(SCOPE_IDENTITY() AS bigint) AS Ident" 44: single_value = true 45: end 46: sql = "EXEC sp_executesql N'#{c.escape(sql)}', N'#{c.escape(types.join(', '))}', #{values.join(', ')}" 47: log_yield(sql) do 48: r = c.execute(sql) 49: r.each{|row| return row.values.first} if single_value 50: end 51: else 52: log_yield(sql) do 53: r = c.execute(sql) 54: return r.send(m) if m 55: end 56: end 57: yield(r) if block_given? 58: rescue TinyTds::Error => e 59: raise_error(e, :disconnect=>!c.active?) 60: ensure 61: r.cancel if r && c.sqlsent? 62: end 63: end 64: end
Execute the DDL sql on the database and return nil.
# File lib/sequel/adapters/tinytds.rb, line 78 78: def execute_ddl(sql, opts={}) 79: execute(sql, opts.merge(:return=>:each)) 80: nil 81: end
Return the number of rows modified by the given sql.
# File lib/sequel/adapters/tinytds.rb, line 67 67: def execute_dui(sql, opts={}) 68: execute(sql, opts.merge(:return=>:do)) 69: end