2012-10-16 216 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