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 | 要读取的 |
amount | 要读取的字节数(对于 |
offset | 开始读取 |
返回值
返回值 | 描述 |
---|---|
RAW | 参数中包含 |
VARCHAR2 |
|
NULL | 可能为以下几种情况:
|
使用说明
VARCHAR2
缓冲区的形式必须与CLOB
参数的形式匹配。也就是说,如果输入LOB
参数的类型为CLOB
,则缓冲区必须包含CHAR
数据。从客户端调用
DBMS_LOB.SUBSTR
时,返回的缓冲区包含客户端字符集中的数据。在将缓冲区返回给用户之前,数据库会将LOB
值从服务器的字符集转换为客户端的字符集。DBMS_LOB.SUBSTR
将基于LOB
中存储的字符返回 8191 个或更多字符。如果由于字符字节大小超出可用缓冲区而没有返回所有字符,则用户应使用新的偏移量调用DBMS_LOB.SUBSTR
以读取其余字符,或者循环调用子程序,直到提取完所有数据。如有必要,
SUBSTR
会在读取前获取LOB
。