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

前
次

GetOracleBlobForUpdate(int, int)

このメソッドはWAIT句を使用して、指定されたBLOB列の更新可能なOracleBlobオブジェクトを戻します。

宣言

// C#
public OracleBlob GetOracleBlobForUpdate(int index, int wait);

パラメータ

  • index

    ゼロベースの列索引です。

  • wait

    メソッドがロックを取得するまで待機する秒数

戻り値

更新可能なOracleBlobオブジェクト

例外

InvalidOperationException - 接続またはリーダーがクローズされているか、Read()が呼び出されていないか、すべての行が読み取られています。

IndexOutOfRangeException - 列索引が無効です。

InvalidCastException - この列型のアクセッサ・メソッドが無効か、列値がNULLです。

備考

OracleCommandExecuteReader()メソッドを起動する場合、OracleDataReaderによってフェッチされる全データは、特定のスナップショットから導出されます。このため、アクセッサ・メソッドを同じ列で呼び出すと、常に同じ値が戻されます。GetOracleBlobForUpdate()メソッドではデータベース・ラウンドトリップを発生させ、現行のBLOBデータに対する参照を取得する一方、FOR UPDATE句を使用して行のロックも行います。つまり、元のスナップショットからは値を取得できないため、GetOracleBlob()から取得したOracleBlobには、GetOracleBlobForUpdate()から取得したOracleBlobとは異なる値を含めることができます。

このメソッドを呼び出す前にIsDBNullを呼び出して、NULL値を確認してください。

このメソッドをコール後にBLOB列はロックされるため、戻されたOracleBlobオブジェクトを使用して、BLOBを安全に更新できます。

このメソッドを内部で起動すると、行をロックするSELECT..FOR UPDATE文が実行されます。

文には、wait値に応じて、別のWAIT句を追加できます。次のwait値の場合は、次のとおりにします。

  • 0

    SELECT..FOR UPDATE文の文末に"NOWAIT" が追加されている場合。ロックを取得済かどうかに関係なく、文はただちに実行されます。ロックが取得されていない場合は、例外がスローされます。

  • n

    SELECT..FOR UPDATE文の文末に"WAIT n" が追加されている場合。文はロックを取得後ただちに実行されます。ロックがn秒で取得できない場合は、このメソッド・コールに例外がスローされます。

    WAIT n」機能は、Oracle9i以降でのみ使用可能です。Oracle9iより前のバージョンの場合は、nが暗黙的に-1として処理され、SELECT..FOR UPDATE文の文末には何も追加されません。

  • -1

    SELECT..FOR UPDATEの文末に何も追加されていない場合。文はロックが取得されるまで無期限に待機して実行されます。

GetOracleBlobForUpdateメソッドは比較可能です。使用方法を示したコード例は、を参照してください。