OracleLob.SetLength(Int64) Method
Definition
Important
Some information relates to prerelease product that may be substantially modified before it’s released. Microsoft makes no warranties, express or implied, with respect to the information provided here.
Sets the length of the OracleLob stream to a value less than the current length.
public:
override void SetLength(long value);
public override void SetLength (long value);
override this.SetLength : int64 -> unit
Public Overrides Sub SetLength (value As Long)
Parameters
- value
- Int64
The desired length of the current OracleLob stream in bytes. For CLOB
and NCLOB
data types, this must be an even number.
Exceptions
A value specified in the value
parameter for a CLOB
or NCLOB
data type is not even.
-or-
A value specified in the value
parameter is less than zero or greater than 4 gigabytes.
The operation is not within a transaction, the OracleLob object is null, or the connection is closed.
The object was closed or disposed.
An Oracle error has occurred.
Remarks
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.
A stream must support both writing and seeking for SetLength to function.
The .NET Framework Data Provider for Oracle handles all CLOB
and NCLOB
data as Unicode. Therefore, when accessing CLOB
and NCLOB
data types, you are always dealing with the number of bytes, where each character is 2 bytes. 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.
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.
Note
A write operation to a read-only LOB
might succeed, but does not update the LOB
on the server. In this case, however, the local copy of the LOB
is updated. Therefore, later read operations on the OracleLob object might return the results of the write operation.