READ 存储过程用于从以 LOB 开头的指定偏移量开始读取数据,并返回到 buffer
参数中。
在 amount
参数中返回实际读取的字节数或字符数。 如果输入偏移量超过 LOB 的末位,则将 amount
设置为 0,并引发 NO_DATA_FOUND
异常。
语法
DBMS_LOB.READ (
lob_loc IN BLOB,
amount IN OUT NOCOPY INTEGER,
offset IN INTEGER,
buffer OUT RAW);
DBMS_LOB.READ (
lob_loc IN CLOB,
amount IN OUT NOCOPY INTEGER,
offset IN INTEGER,
buffer OUT VARCHAR2 );
参数解释
参数 | 解释 |
---|---|
lob_loc | 要读取的 LOB 的定位器。详细信息请参见 DBMS_LOB 使用说明。 |
file_loc | 要检查的 LOB 的文件定位器。 |
amount | 要读取的字节数(对于 |
offset | 开始读取 LOB 的偏移量。 |
buffer | 读取操作的输出缓冲区。 |
异常情况
异常 | 描述 |
---|---|
VALUE_ERROR |
|
INVALID_ARGVAL | 可能为以下几种情况:
|
NO_DATA_FOUND | 到达 LOB 的末位,并且不再有要从 LOB 读取的字节或字符,即 |
使用说明
VARCHAR2
缓冲区的形式必须与CLOB
参数的形式匹配。 换句话说,如果输入 LOB 参数的类型为CLOB
,则缓冲区必须包含CHAR
数据。从客户端调用
DBMS_LOB.READ
时,返回的缓冲区的值包含客户端字符集中的数据。 在将缓冲区的值返回给用户之前,数据库会将 LOB 值从服务器的字符集转换为客户端的字符集。如果需要,可以让 READ 在读取之前获取 LOB。
如果 LOB 是 DBFS LINK,则从 DBFS 流转数据(如果可能),否则将引发异常。