TRIM 存储过程用于将内部 LOB 的值修整为在 newlen 参数中指定的长度。

TRIM 存储过程为 BLOB 指定以字节为单位的长度,为 CLOB 指定以字符为单位的长度。

说明

TRIM 存储过程将 LOB 的长度减少到 newlen 参数中指定的值。

如果尝试对空的 LOB 执行 TRIM,则无结果,并且 TRIM 不返回错误。如果在 newlen 中新指定的长度大于 LOB 的大小,则会引发异常。

语法

  1. DBMS_LOB.TRIM (
  2. lob_loc IN OUT NOCOPY BLOB,
  3. newlen IN INTEGER);
  4. DBMS_LOB.TRIM (
  5. lob_loc IN OUT NOCOPY CLOB CHARACTER SET ANY_CS,
  6. newlen IN INTEGER);

参数解释

参数

解释

lob_loc

内部 LOB 的定位符,将对其长度进行调整。详细信息请参见 DBMS_LOB 使用说明

newlen

经过修剪过的新的 LOB 长度值(对于 BLOB 为字节,对于 CLOB 为字符)。

异常情况

异常描述

VALUE_ERROR

lob_loc 值为 NULL

INVALID_ARGVAL

可能为以下几种情况:

  • new_len 值小于 0

  • new_len 大于 LOBMAXSIZE

QUERY_WRITE

无法在查询或 PDML 并行执行服务器内执行 LOB 写入。

BUFFERING_ENABLED

如果在 LOB 上启用了缓冲,则无法在启用 LOB 缓冲的情况下执行操作。

使用说明

  • 不强制要求将 LOB 操作包裹在 Open/Close 接口中。 如果在执行操作之前没有打开 LOB,则在调用过程中会更新 LOB 列上的功能索引和域索引。 如果在执行操作之前打开了 LOB,则必须在提交事务之前将其关闭。在关闭内部 LOB 时,将更新 LOB 列上的功能索引和域索引。

  • 如果未将 LOB 操作包裹在 Open/Close API 内,则每次写入 LOB 时都会更新功能索引和域索引。为避免对性能产生不利影响,建议将对 LOB 的写操作包含在 OPENCLOSE 语句中。

  • 必要时,TRIM 在更改 LOB 的长度之前会获取 LOB,除非指定的新长度为 0。