OracleLob.SetLength(Int64) メソッド

定義

OracleLob ストリームの長さを、現在の長さより短い値に設定します。

public:
 override void SetLength(long value);
public override void SetLength (long value);
override this.SetLength : int64 -> unit
Public Overrides Sub SetLength (value As Long)

パラメーター

value
Int64

現在の OracleLob ストリームの希望の長さ (バイト数)。 CLOB 型および NCLOB 型の場合、これは偶数である必要があります。

例外

value パラメーターで CLOB または NCLOB データ型に指定した値が偶数ではありません。

- または -

value で指定したパラメーターの値が 0 未満であるか、4 GB を超えています。

操作がトランザクション内で実行されていないか、OracleLob オブジェクトが null か、または接続が閉じられています。

オブジェクトが閉じられているか、破棄されています。

Oracle エラーが発生しました。

注釈

ストリームの OracleLob 長さを増やそうとすると失敗し、Oracle サーバーから "Message: ORA-22926: specified trim length is greater than current LOB value's length" (メッセージ: ORA-22926: 指定されたトリミング長が現在の LOB 値の長さより大きい) を Oracle サーバーから返します。

ストリームは、to 関数の書き込みとシークの SetLength 両方をサポートする必要があります。

.NET Framework Data Provider for Oracle は、すべてのCLOBデータとデータを NCLOB Unicode として処理します。 したがって、および NCLOB データ型にアクセスするCLOB場合は、常にバイト数を処理します。各文字は 2 バイトです。 たとえば、3 文字を含むテキストの文字列が、1 文字あたり 4 バイトの Oracle サーバーに として NCLOB 保存され、操作を実行 SetLength する場合は、サーバーに 12 バイトとして格納されますが、文字列の長さは 6 バイトとして指定します。

を に LOB書き込むには、SQL SELECT ステートメントで FOR UPDATE 句を使用して を取得 LOB し、ローカル トランザクションを開始する必要があります。

注意

読み取り専用 LOB に対する書き込み操作は成功する可能性がありますが、サーバー上の を LOB 更新しません。 ただし、この場合、 のローカル コピー LOB が更新されます。 したがって、オブジェクトに対する後の読み取り OracleLob 操作は、書き込み操作の結果を返す可能性があります。

適用対象