SUBSTR 函数用于返回 LOB 的 amount
字节或字符(从以 LOB 开头的绝对偏移量开始计算)。
对于固定宽度为 n 字节的 CLOB
,如果 SUBSTR
的输入量大于(32767 / n),则 SUBSTR
返回长度为(32767 / n)或 CLOB
长度(以较小者为准)的字符缓冲区。 对于宽度为可变字符集中的 CLOB
,n
是用于 CLOB
中字符的最大字节宽度。
语法
DBMS_LOB.SUBSTR (
lob_loc IN BLOB,
amount IN INTEGER := 32767,
offset IN INTEGER := 1)
RETURN RAW;
DBMS_LOB.SUBSTR (
lob_loc IN CLOB CHARACTER SET ANY_CS,
amount IN INTEGER := 32767,
offset IN INTEGER := 1)
RETURN VARCHAR2;
参数解释
参数 | 解释 |
---|---|
lob_loc | 要读取的 LOB 定位器。详细信息请参见 DBMS_LOB 使用说明。 |
amount | 要读取的字节数(对于 |
offset | 开始读取 LOB 的字节数(对于 |
返回值
返回值 | 描述 |
---|---|
RAW | 参数中包含 |
VARCHAR2 |
|
NULL | 可能为以下几种情况:
|
使用说明
VARCHAR2
缓冲区的形式必须与CLOB
参数的形式匹配。也就是说,如果输入 LOB 参数的类型为CLOB
,则缓冲区必须包含CHAR
数据。从客户端调用
DBMS_LOB.SUBSTR
时,返回的缓冲区包含客户端字符集中的数据。在将缓冲区返回给用户之前,数据库会将 LOB 值从服务器的字符集转换为客户端的字符集。DBMS_LOB.SUBSTR
将基于 LOB 中存储的字符返回 8191 个或更多字符。如果由于字符字节大小超出可用缓冲区而没有返回所有字符,则用户应使用新的偏移量调用DBMS_LOB.SUBSTR
以读取其余字符,或者循环调用子程序,直到提取完所有数据。如有必要,
SUBSTR
会在读取前获取 LOB。如果 LOB 是 DBFS 链接,则从 DBFS 流转数据(如果可能),否则将引发异常。