为了提高执行效率,希望能够跳过ActiveRecord的CRUD直接调用Oracle的PLSQL,于是开始寻找怎么在Rails里面直接调用OCI8的Connection对象。因为ActiveRecord肯定是使用OracleAdapter来进行连接的,OracleAdapter中使用的就是OCI8。为什么不直接使用OCI8.new呢?很显然这样会创建一个新的至Oracle的连接,浪费开销。
翻遍了activerecord-oracle-adapter的代码,干脆在OracleAdapter类中添加一个自定义的方法oci_connection解决问题:
module ActiveRecord
module ConnectionAdapters #:nodoc:
class OracleAdapter < AbstractAdapter
def exec(sql, *bindvars, &block)
@connection.exec(sql, *bindvars, &block)
end
def oci_connection
@connection
[...]
Rails中直接使用OCI8的Connection
最新推荐文章于 2025-07-04 09:10:57 发布
本文介绍如何在Rails应用中不通过ActiveRecord而是直接利用OCI8连接对象来调用Oracle数据库的PLSQL过程,以此提高执行效率。
291

被折叠的 条评论
为什么被折叠?



