2012-10-16 191 views
3

我试图执行oracle存储过程导航控制台。使用下面的代码Rails执行存储过程

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 2和3下运行,两者都不起作用,并显示相同的错误消息。

回答

2

下面的语句的工作原理:

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

虽然很多文件显示,使用EXEC,或拨打电话应该是工作。 Calling Stored procedure through Rails?

+0

找到这个调用vs exec http://www.orafaq.com/forum/t/81939/2/。看起来,exec只能用于SQLPlus。因此,如果您不是从SQL Plus调用,那么它不是真正的有效SQL。 – Shanison