OracleLob.SetLength(Int64) OracleLob.SetLength(Int64) OracleLob.SetLength(Int64) OracleLob.SetLength(Int64) Method


OracleLob ストリームの長さを、現在の長さより短い値に設定します。Sets the length of the OracleLob stream to a value less than the current length.

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


Int64 Int64 Int64 Int64

現在の OracleLob ストリームの希望の長さ (バイト数)。The desired length of the current OracleLob stream in bytes. CLOB 型および NCLOB 型の場合、これは偶数である必要があります。For CLOB and NCLOB data types, this must be an even number.


value パラメーターで CLOB または NCLOB データ型に指定した値が偶数ではありません。A value specified in the value parameter for a CLOB or NCLOB data type is not even.

- または --or- value で指定したパラメーターの値が 0 未満であるか、4 GB を超えています。A value specified in the value parameter is less than zero or greater than 4 gigabytes.

操作がトランザクション内で実行されていないか、OracleLob オブジェクトが null か、または接続が閉じられています。The operation is not within a transaction, the OracleLob object is null, or the connection is closed.

オブジェクトが閉じられているか、破棄されています。The object was closed or disposed.

Oracle エラーが発生しました。An Oracle error has occurred.


OracleLobストリームの長さを増やしようとして失敗し、"Message:ORA-22926: 指定されたトリム長が、Oracle サーバーの現在の LOB 値の長さを超えています。An attempt to increase the length of the OracleLob stream fails, and returns "Message: ORA-22926: specified trim length is greater than current LOB value's length" from the Oracle server.

ストリームでは、の書き込みとシークのSetLength両方がサポートされている必要があります。A stream must support both writing and seeking for SetLength to function.

Oracle 用の .NET Framework Data Provider は、 CLOBすべてNCLOBのおよびデータを Unicode として処理します。The .NET Framework Data Provider for Oracle handles all CLOB and NCLOB data as Unicode. したがって、データCLOBNCLOBおよびデータ型にアクセスする場合は、常にバイト数を処理します。各文字は2バイトです。Therefore, when accessing CLOB and NCLOB data types, you are always dealing with the number of bytes, where each character is 2 bytes. たとえば、3つの文字を含むテキストの文字列が Oracle サーバー NCLOBのとして保存されていて、文字セットが1文字に4バイトで、 SetLength操作を実行する場合、文字列の長さを6バイトに指定しますが、サーバーに12バイトとして格納されます。For example, if a string of text containing three characters is saved as an NCLOB on an Oracle server where the character set is 4 bytes per character, and you perform a SetLength operation, you specify the length of the string as 6 bytes, although it is stored as 12 bytes on the server.

LOB書き込むには、SQL SELECT ステートメントで FOR LOB UPDATE 句を使用してを取得しておく必要があります。また、ローカルトランザクションを開始する必要があります。To write to the LOB, you must have retrieved the LOB using the FOR UPDATE clause in the SQL SELECT statement, and you must have a local transaction started.


読み取りLOB専用への書き込み操作は成功する可能性がありますが、サーバー LOB上のは更新されません。A write operation to a read-only LOB might succeed, but does not update the LOB on the server. ただし、この場合、のLOBローカルコピーは更新されます。In this case, however, the local copy of the LOB is updated. そのため、後でOracleLobオブジェクトに対して読み取り操作を実行すると、書き込み操作の結果が返される可能性があります。Therefore, later read operations on the OracleLob object might return the results of the write operation.