在Rails 4中调用存储过程

时间:2015-09-13 08:06:56

标签: ruby-on-rails

我正在调用一个返回多个结果的存储过程。

在Rails 4中,找到的唯一解决方案是使用标志MULTI_STATEMENTS发起新的Mysql2::Client。打开与数据库服务器的新连接似乎不对。

options = Rails.application.config_for(:database).merge flags: Mysql2::Client::MULTI_STATEMENTS
client = Mysql2::Client.new options
results = client.query %Q{CALL my_proc('#{params}')}
client.close

results

所以我的问题是:目前是否有更好的解决方案?

1 个答案:

答案 0 :(得分:0)

解决方案是使用exec_query调用存储过程,然后调用clear_active_connections!,如下所示:

results = ActiveRecord::Base.connection.exec_query %Q{CALL my_proc('#{params}')}
ActiveRecord::Base.clear_active_connections!

results