Home » Uncategorized » Rails中直接使用OCI8的Connection

Rails中直接使用OCI8的Connection

为了提高执行效率,希望能够跳过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
end
end
end
end

最后准备结束时,突然发现:
conn = ActiveRecord::Base.connection.raw_connection

参见:http://ruby-oci8.rubyforge.org/en/FAQ_plsql_out_param.html

,

转发到新浪微博 转发到新浪微博

No Responses To This Post So Far(Rss)

Leave a Reply