Rails执行存储过程

时间:2012-10-16 07:24:56

标签: ruby-on-rails stored-procedures

我正在尝试从 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 developer 中运行查询,但它运行正常,这意味着我的存储过程很好

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

我确实向我正在使用的rails的数据库用户授予了Execute权限。我尝试在Rails 2和3下运行它,两者都不起作用并显示相同的错误消息。

1 个答案:

答案 0 :(得分:2)

以下声明有效:

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

虽然很多文档显示使用exec,或者调用应该正常工作。 Calling Stored procedure through Rails?