READ 存储过程用于从以 LOB 开头的指定偏移量开始读取数据,并返回到 buffer 参数中。

amount参数中返回实际读取的字节数或字符数。 如果输入偏移量超过 LOB 的末位,则将 amount 设置为 0,并引发 NO_DATA_FOUND 异常。

语法

  1. DBMS_LOB.READ (
  2. lob_loc IN BLOB,
  3. amount IN OUT NOCOPY INTEGER,
  4. offset IN INTEGER,
  5. buffer OUT RAW);
  6. DBMS_LOB.READ (
  7. lob_loc IN CLOB,
  8. amount IN OUT NOCOPY INTEGER,
  9. offset IN INTEGER,
  10. buffer OUT VARCHAR2 );

参数解释

参数

解释

lob_loc

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

file_loc

要检查的 LOB 的文件定位器。

amount

要读取的字节数(对于 BLOB)或字符(对于 CLOB),或者已读取的数字。

offset

开始读取 LOB 的偏移量。

buffer

读取操作的输出缓冲区。

异常情况

异常

描述

VALUE_ERROR

lob_locmount 或 offset 参数中的任意一个为 NULL。

INVALID_ARGVAL

可能为以下几种情况:

  • amount 小于 1

  • amount 大于 32767 字节 (或等效字符)

  • offset 小于 1

  • offset 大于 LOBMAXSIZE

  • 以字节或字符为单位的 amount 大于缓冲区的容量

NO_DATA_FOUND

到达 LOB 的末位,并且不再有要从 LOB 读取的字节或字符,即 amount 的值为 0。

使用说明

  • VARCHAR2 缓冲区的形式必须与 CLOB 参数的形式匹配。 换句话说,如果输入 LOB 参数的类型为 CLOB,则缓冲区必须包含 CHAR 数据。

  • 从客户端调用 DBMS_LOB.READ 时,返回的缓冲区的值包含客户端字符集中的数据。 在将缓冲区的值返回给用户之前,数据库会将 LOB 值从服务器的字符集转换为客户端的字符集。

  • 如果需要,可以让 READ 在读取之前获取 LOB。

  • 如果 LOB 是 DBFS LINK,则从 DBFS 流转数据(如果可能),否则将引发异常。