プライマリ・コンテンツに移動

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` - `bWait`が`false`に設定されており、ロックを取得できません。

備考

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

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

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

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

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

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

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

関連項目:

- "Oracle.DataAccess.TypesおよびOracle.ManagedDataAccess.Typesのネームスペース"

- OracleRefクラス

- OracleRefメンバー