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
Previous post: 解决Cucumber测试结果中文乱码问题
Next post: Windows 7 beta 7000使用有感
No Responses To This Post So Far(Rss)