我使用tchandy/octopus gem进行数据库分片。我有一个要求,就是在不同的sql server数据库上执行存储过程。我如何使用这个gem来做这件事呢?
任何帮助都将不胜感激。谢谢。
发布于 2014-07-07 15:03:54
如果您使用的是ActiveRecord SQLServer适配器,请检查:
http://rubydoc.info/gems/activerecord-sqlserver-adapter/3.2.9/ActiveRecord/ConnectionAdapters/Sqlserver/DatabaseStatements:execute_procedure
在您的代码中执行类似以下操作
class Pro::DataImport < ActiveRecord::Base
def self.update(user)
self.execute_procedure("Stored Procedure Name", arg1, arg2)
end
end每个普通SQL查询都转换为要执行的存储过程。这就是用于ActiveRecord的SQL Server适配器的工作方式。因此,对于数据库中定义的永久存储过程,您只需担心这一点。
发布于 2014-07-07 23:25:12
感谢您的回复。
我正在做这样的事情:
class Order < ActiveRecord::Base
def self.call_proc_example shard
Octopus.using( shard.to_sym ) do
self.select_all( "exec [dbo].[proc_name_example];" );
end
end
end它对我来说很有效,因为我有很多数据库来执行过程。
https://stackoverflow.com/questions/24600726
复制相似问题