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 流的长度(以字节表示)。 对于 CLOBNCLOB 数据类型,它必须为偶数。

例外

value 参数中为 CLOBNCLOB 数据类型指定的值不是偶数。

- 或 -

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

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

对象已关闭或已释放。

发生了 Oracle 错误。

注解

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

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

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

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

注意

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

适用于