16.8.6.9 GetCustomObjectForUpdate(bool)

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

宣言

// C#
public object GetCustomObjectForUpdate(bool bWait);

パラメータ

  • bWait

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

戻り値

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

例外

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

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

備考

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

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

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

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

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