天天看點

ODP.NET 裡的一些特性

ODP.NET 裡的一些特性

當用ODP.NET内置的connection pool時, 如果oracle裡用profile設了maximun session idle time, 當session 過了這個time, 而OracleConnection.open試着從pool裡去取connection時, 會出現exceed maximum idle time 錯誤, 而再次調用, 就會說not logon錯誤, 解決方法是加validate Connection = true到connection string裡, 這樣就不會去取bad session了, 這也可用于如果有人kill了你的session.

ODP.NET 裡支援在一次調用裡做批量insert或update, 他提供兩個方法, 一是用Array binding, 我們可以把需要多次調用的一個OralcleCommand的一批不同參數放到多個數組裡,一起傳給oracle, oracle會根據定義的ArrayBindCount 做一個循環來執行sql或stored proc. 二是用PL/SQL associative arrays , 通過他我們可以用數組做為stored proc的參數.

在ODP.NET 裡我們還可以用一個OralcleCommand傳回多個DataReader, oracleCommand.executeDataReader得到第一個DataReader, oracleCommand.NextResult用來得到下面的DataReader.

ODP.NET裡還提供了OracleCommand.Cancel, 他可以用來中斷一個長時間的查訊, 他的原理是調用了OCIBreak這個低層API