【问题标题】:Rails execute stored procedureRails 执行存储过程
【发布时间】:2012-10-16 07:24:56
【问题描述】:

我正在尝试从 rails 控制台 执行 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 下运行它,两者都不起作用并显示相同的错误消息。

【问题讨论】:

    标签: ruby-on-rails stored-procedures


    【解决方案1】:

    以下语句有效:

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

    虽然很多文档显示使用 exec 或 call 应该可以工作。 Calling Stored procedure through Rails?

    【讨论】:

    • 发现这个调用 vs exec orafaq.com/forum/t/81939/2。似乎 exec 仅适用于 SQLPlus。因此,如果您不是从 SQL Plus 调用,它就不是一个真正有效的 sql。
    猜你喜欢
    • 1970-01-01
    • 2010-09-15
    • 1970-01-01
    • 1970-01-01
    • 2011-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-07
    相关资源
    最近更新 更多