3

rails consoleからoracle ストアド プロシージャを実行しようとしています。次のコードを使用する

ActiveRecord::Base.connection.execute("execute change_name('shanison', 'shanison_test');

そして、次のエラーが発生し続けます

ActiveRecord::StatementInvalid: OCIError: ORA-00900: invalid SQL statement: execute si.change_name('shanison', 'shanison_test');

Oracle sql 開発者でクエリを直接実行しようとしましたが、問題なく動作しました。つまり、ストアド プロシージャは問題ありません。

execute change_name('shanison', 'shanison_test');

私が使用しているレールのデータベースユーザーに実行権限を付与しました。これを Rails 2 と 3 で実行しようとしましたが、どちらも機能せず、同じエラー メッセージが表示されます。

4

1 に答える 1

3

次のステートメントは機能します。

OracleTableBase.connection.execute("begin change_user_name('shanison', 'shanison_test');end;")

多くのドキュメントは、execまたはcallの使用が機能することを示していますが。Railsを介してストアドプロシージャを呼び出す?

于 2012-10-16T08:19:15.983 に答える