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 developer中运行查询,它运行良好,这意味着我的存储过程很好

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

我确实向我正在使用的 rails 的数据库用户授予了执行权限。我尝试在 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 回答