Sql DBMS_LOB.substr返回null
Sql DBMS_LOB.substr返回null,sql,oracle,substr,clob,Sql,Oracle,Substr,Clob,v_tmp_clob:=DBMS_LOB.substr(v_qry_strng,DBMS_LOB.getlength(v_qry_strng)-10,1) 前一行返回null,尽管v_qry\u strng是一个长度为32897个字符的CLOB。。。有人能解释一下吗?您还没有指定Oracle版本 DBMS_LOB.SUBSTR返回一个VARCHAR2(除其他外,但不是CLOB),它最多可以容纳32767字节的字符 另外,DBMS\u LOB.SUBSTR在以下位置返回NULL: 任何参数都显式为
v_tmp_clob:=DBMS_LOB.substr(v_qry_strng,DBMS_LOB.getlength(v_qry_strng)-10,1)代码>
前一行返回null,尽管v_qry\u strng
是一个长度为32897个字符的CLOB。。。有人能解释一下吗?您还没有指定Oracle版本
DBMS_LOB.SUBSTR
返回一个VARCHAR2
(除其他外,但不是CLOB
),它最多可以容纳32767字节的字符
另外,DBMS\u LOB.SUBSTR
在以下位置返回NULL
:
任何参数都显式为空
参数2(金额)<1
参数2(金额)>32767
参数3(偏移量)<1
参数3(偏移量)>LOBMAXSIZE
在表达式中,有:dbms\u lob.getlength(v\u qry\u strng)-10
-->32897-10
-->32887
作为参数2
32887>32767
那么,在我的例子中,如何在CLOB上执行相同的操作呢?使用DBMS\u LOB.COPY
,参数略有不同,但很简单。见:
DBMS_LOB.COPY(v_tmp_clob, v_qry_strng, DBMS_LOB.GETLENGTH(v_qry_strng) - 10, 1, 1);