ERASE 存储过程用于擦除整个或部分内部 LOB。

语法

  1. DBMS_LOB.ERASE (
  2. lob_loc IN OUT NOCOPY BLOB,
  3. amount IN OUT NOCOPY INTEGER,
  4. offset IN INTEGER := 1);
  5. DBMS_LOB.ERASE (
  6. lob_loc IN OUT NOCOPY CLOB,
  7. amount IN OUT NOCOPY INTEGER,
  8. offset IN INTEGER := 1);

参数解释

参数

解释

lob_loc

要删除的 LOB 的定位器。详细信息请参见 DBMS_LOB 使用说明。

amount

要擦除的字节数(BLOB)或字符数(CLOB)。

offset

以 LOB 开头的绝对偏移量(原点为 1),以字节(BLOB)或字符(CLOB)为单位。

使用说明如下:

  • 擦除 LOB 的中间数据时,分别为 BLOB 或 CLOB 写入零字节填充符或空格。

  • 如果在擦除指定的数字之前已到 LOB 值的末尾,则擦除的实际字节数或字符数可以与 amount 参数中指定的数字不同。实际删除的字符数或字节数将在 amount 参数中返回。

注意

只擦除 LOB 的部分数据时,LOB 的长度不会减小。要减小 LOB 值的长度,请参见 TRIM

异常情况

异常

描述

VALUE_ERROR

任何输入参数均为 NULL。

INVALID_ARGVAL

发生以下某种情况:

  • offset 小于 1 或者 offset 大于 LOBMAXSIZE

  • amount 小于 1 或者 amount 大于 LOBMAXSIZE

QUERY_WRITE

无法在查询中执行 LOB 写入。

BUFFERING_ENABLED

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