GetCustomObject(OracleUdtFetchOption, int)
このメソッドは、指定したフェッチ・オプションおよび深さレベルを使用して、カスタム・タイプとして指定したREFが参照するオブジェクトを戻します。
宣言
// C#
public object GetCustomObject(OracleUdtFetchOption fetchOption, int depthLevel);
パラメータ
-
fetchOptionOracleUdtFetchOption値。 -
depthLevelネストされた
REF属性にフェッチされるレベルの数。
戻り値
指定したREFが参照するオブジェクトを表すカスタム・オブジェクト。
例外
InvalidOperationException - 指定した接続がオープンされていないか、有効なカスタム・タイプが参照オブジェクトのタイプに登録されていません。
備考
このメソッドは、指定した接続でのUDTマッピングにより定義されたカスタム・タイプを戻します。
REFが参照するオブジェクトに、ネストされたREF属性が含まれる場合、depthLevelを指定して後続のオブジェクトの取得を最適化できます。depthLevelの値によって最適化されるレベルの数が定義されます。
たとえば、depthLevelを2に指定する場合、最適化は、フェッチされるオブジェクト内のすべてのネストされた最上位レベルのREF属性に適用され、また、すべてのネストされた最上位レベルのREF属性が参照するオブジェクト内のすべてのネストされたREF属性にも適用されます。
接続は、アプリケーションによって明示的にオープンされる必要があります。このメソッドでは、接続を暗黙的にオープンしません。
アプリケーションではOracleUdtFetchOptionメソッドを使用して、指定したオプションに従って戻されるオブジェクトのコピーを制御できます。
-
OracleUdtFetchOptionオプションこのオプションが指定され、オブジェクト・キャッシュに参照オブジェクトのコピーがある場合、コピーがただちに戻されます。キャッシュのコピーが存在しない場合、データベース内の参照オブジェクトの最新のコピーが、オブジェクト・キャッシュでキャッシュされ、戻されます。
-
OracleUdtFetchOption.Serverオプションこのオプションが指定されると、データベースから参照したオブジェクトの最新のコピーは、オブジェクト・キャッシュでキャッシュされ、戻されます。キャッシュに参照オブジェクトのコピーがすでに存在する場合、最新のコピーは既存のコピーを上書きします。
-
OracleUdtFetchOption.TransactionCacheオプションこのオプションが指定され、参照したオブジェクトのコピーが現行のトランザクションでキャッシュされると、コピーが戻されます。それ以外の場合は、データベースからの参照オブジェクトの最新のコピーは、オブジェクト・キャッシュでキャッシュされ、戻されます。キャッシュに参照オブジェクトのコピーがすでに存在する場合、最新のコピーは既存のコピーを上書きします。
参照オブジェクトのキャッシュ済コピーが現行のトランザクションが開始される前に変更された場合、つまり、
OracleRef.HasChangesプロパティがtrueを戻す場合、Recentオプションによって参照オブジェクトのキャッシュ済コピーが戻されることに注意してください。トランザクションの外では、RecentオプションはAnyオプションと同様の動作をします。