プライマリ・コンテンツに移動
Oracle® Data Provider for .NET開発者ガイド
ODAC 12.2c リリース1 (12.2.0.1) for Microsoft Windows
E88311-03
目次へ移動
目次
索引へ移動
索引

前
次

GetCustomObjectForUpdate(bool, int)

このメソッドは、データベース内で指定したREFをロックし、指定したwaitオプションおよび深さレベルを使用して、カスタム・タイプとして指定したREFが参照するオブジェクトを戻します

宣言

public object GetCustomObjectForUpdate(bool bWait, int depthlevel);

パラメータ

  • bWait

    no-waitオプションでREFがロックされるかどうかを指定するブール値。waitがtrueに設定されている場合、このメソッドを起動しても、REFがロックされるまで値は戻りません。

  • depthLevel

    ネストされたREF属性にフェッチされるレベルの数。

戻り値

指定したREFが参照するオブジェクトを表すカスタム・オブジェクト。

例外

InvalidOperationException - 指定した接続がオープンされていないか、有効なカスタム・タイプが参照オブジェクトのタイプに登録されていません。

OracleException - bWaitfalseに設定されており、ロックを取得できません。

備考

このメソッドは、OracleRef接続で登録したカスタム・タイプで定義した参照オブジェクトの最新のコピーをカスタム・タイプとして戻します。

OracleRefFlushメソッドまたはOracleConnectionFlushCacheメソッドを使用してREFをフラッシュした後、REFで適切にロックを解除するには、アプリケーションはトランザクションをコミットまたはロールバックする必要があります。このため、このメソッドを呼び出す前に、OracleConnectionオブジェクトでBeginTransactionメソッドを実行して、明示的にトランザクションを開始する必要があります。

このメソッドはネットワーク・ラウンドトリップを作成してデータベース内のREFをロックします。このコールの後、プログラマは関連付けられた行オブジェクトを排他的に変更できます。その後で、OracleRefFlushメソッドまたはOracleConnectionFlushCacheメソッドへのコールを実行すると、データベースへの変更がフラッシュされます。

trueが渡されると、このメソッドはロックが取得されるまでブロックされます。falseが渡される場合は、このメソッドはただちに値を戻します。ロックが取得できない場合は、OracleExceptionがスローされます。

REFが参照するオブジェクトに、ネストされたREF属性が含まれる場合、depthLevelを指定して後続のオブジェクトの取得を最適化できます。depthLevelの値によって最適化されるレベルの数が定義されます。

たとえば、depthLevel2に指定する場合、最適化は、フェッチされるオブジェクト内のすべてのネストされた最上位レベルのREF属性に適用され、また、すべてのネストされた最上位レベルのREF属性が参照するオブジェクト内のすべてのネストされたREF属性にも適用されます。

接続は、アプリケーションによって明示的にオープンされる必要があります。このメソッドでは、接続を暗黙的にオープンしません。