2017-06-19 40 views
0

SQLServerデータベースにストアドプロシージャを実行しようとしています。手続きはそれがするはずのことですが、私がRuby on Railsアプリケーションから実行しようとするたびに手続きを実行しますが、戻り値を取得することはできません。また、出力パラメータを使用する手順を変更しようとしました。RailsでActiveRecord execute_procedure()から返された結果がありません

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

レンダリングに空の配列が表示されます。プロシージャが成功すると1になり、失敗した場合は0になります。これをSQL Server Management Studioで実行すると、戻り値を取得できます。私は間違って何をしていますか?

答えて

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 
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は利用可能なメソッドを返します。

+0

メソッドのソースコードは、ここでhttp://www.rubydoc.info/gems/activerecord-sqlserver-adapter/3.2.9/ActiveRecord/ConnectionAdapters/Sqlserver/DatabaseStatements:execute_procedureあります。 結果はこのメソッドでは空の配列として宣言され、.methodsが与えるすべてのメソッドは配列であることを暗示しているようです。私はto_jsonを実行したときに空の配列も表示します。実際のプロシージャが返す1または0を探しています。 – jgolfman

+0

'#result'、'#first'はどうでしょうか? –

+0

それから何も – jgolfman

関連する問題