在Rails中没有从ActiveRecord execute_procedure()返回结果

时间:2017-06-19 21:33:00

标签: sql ruby-on-rails sql-server ruby

我正在尝试在SQLServer数据库中执行存储过程。该过程完成它应该做的事情,但每当我尝试从我的Ruby on Rails应用程序运行它时,它执行过程,但我无法获得返回值。我也尝试修改过程以使用输出参数。

@success = ActiveRecord::Base.connection.execute_procedure("procedure",params[:field1],params[:field2],params[:field3])
render html: @success

渲染显示一个空数组。如果过程成功则应为1,如果失败则应为0。当我在SQL Server Management Studio中运行它时,我可以获得返回值。我做错了什么?

2 个答案:

答案 0 :(得分:0)

我不相信execute_procedure会返回一个数组 - 这正是您正在寻找的。你想要的是结果。也许ActiveRecord::Base.connection.execute_procedure("procedure",params[:field1],params[:field2],params[:field3]).to_a

点击ActiveRecord::Base.connection.execute_procedure("procedure",params[:field1],params[:field2],params[:field3]).inspect查看正在进行的操作,或者您可以查看是否已实施to_json

最后,ActiveRecord::Base.connection.execute_procedure("procedure",params[:field1],params[:field2],params[:field3]).methods将返回可用的方法。

答案 1 :(得分:0)

我从https://groups.google.com/forum/#!topic/rails-sqlserver-adapter/6C4sDXdtAfA找到答案。我需要运行该过程,然后从原始连接返回如下。

ActiveRecord::Base.connection.execute_procedure("procedure",params[:field1],params[:field2]
@success = ActiveRecord::Base.connection.raw_connection_return_code
相关问题