我正在尝试在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中运行它时,我可以获得返回值。我做错了什么?
答案 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