为了提高执行效率,希望能够跳过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
最新推荐文章于 2021-04-06 11:35:02 发布