次の方法で共有


OracleLob.SetLength メソッド

メモ : この名前空間、クラス、およびメンバは、.NET Framework Version 1.1 だけでサポートされています。

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

Overrides Public Sub SetLength( _
   ByVal value As Long _)
[C#]
public override void SetLength(longvalue);
[C++]
public: void SetLength(__int64value);
[JScript]
public override function SetLength(
   value : long);

パラメータ

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

例外

例外の種類 条件
ArgumentOutOfRangeException value パラメータで CLOB または NCLOB データ型に指定した値が偶数ではありません。

または

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

InvalidOperationException LOB に書き込むには、トランザクション内でこの操作を実行する必要があります。

または

OracleLob オブジェクトが null です。

または

接続が閉じています。

ObjectDisposedException オブジェクトが閉じられているか、破棄されています。
OracleException Oracle エラーが発生しました。

解説

OracleLob ストリームの長さを増やそうとすると失敗し、Oracle サーバーから "Message: ORA-22926: 指定された切り捨ての長さが現行の LOB 値の長さを超えています。" が返されます。

SetLength が機能するためには、ストリームが書き込みとシークの両方をサポートしていることが必要です。

.NET Framework Data Provider for Oracle は、すべての CLOB データおよび NCLOB データを Unicode として処理します。したがって、 CLOB 型および NCLOB 型では 1 文字が 2 バイトとなるため、これらにアクセスするときは常に複数のバイトを扱うことになります。たとえば、3 文字から成る文字列が、1 文字が 4 バイトの文字セットを使用している Oracle サーバーに NCLOB として保存されていて、 SetLength 操作を実行する場合、文字列はサーバーに 12 バイトとして格納されていますが、文字列の長さは 6 バイトを指定します。

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

必要条件

プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ

.NET Framework セキュリティ:

参照

OracleLob クラス | OracleLob メンバ | System.Data.OracleClient 名前空間