我正在尝试从 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下运行它,两者都不起作用并显示相同的错误消息。
答案 0 :(得分:2)
以下声明有效:
OracleTableBase.connection.execute("begin change_user_name('shanison', 'shanison_test');end;")
虽然很多文档显示使用exec,或者调用应该正常工作。 Calling Stored procedure through Rails?