16.8.6.7 GetCustomObject(OracleUdtFetchOption, int)
このメソッドは、指定したフェッチ・オプションおよび深さレベルを使用して、カスタム・タイプとして指定したREF
が参照するオブジェクトを戻します。
宣言
// C#
public object GetCustomObject(OracleUdtFetchOption fetchOption, int depthLevel);
パラメータ
-
fetchOption
OracleUdtFetchOption
値。 -
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
オプションと同様の動作をします。