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为数据类型CLOBNCLOB指定的值甚至不是。

-或-

参数 value 中指定的值小于零或大于 4 GB。

该操作不在事务中,对象 OracleLob 为 null,或连接已关闭。

对象已关闭或释放。

发生 Oracle 错误。

注解

尝试增加流的长度 OracleLob 失败,并从 Oracle 服务器返回“消息:ORA-22926:指定的剪裁长度大于当前 LOB 值的长度”。

流必须同时支持写入和寻求 SetLength 正常运行。

Oracle 的 .NET Framework Data Provider 将所有 CLOBNCLOB 数据作为 Unicode 进行处理。 因此,访问 CLOBNCLOB 数据类型时,始终处理字节数,其中每个字符为 2 个字节。 例如,如果包含三个字符的文本字符串保存在 NCLOB 每个字符为 4 个字节的 Oracle 服务器上,并且执行 SetLength 操作,则指定字符串的长度为 6 个字节,尽管它在服务器上存储为 12 个字节。

若要写入, LOB必须在 SQL SELECT 语句中使用 FOR UPDATE 子句检索 LOB ,并且必须启动本地事务。

注释

对只读 LOB 的写入操作可能会成功,但不更新 LOB 服务器上的写入操作。 但是,在这种情况下,将更新该 LOB 副本的本地副本。 因此,以后对 OracleLob 对象的读取操作可能会返回写入操作的结果。

适用于