百思不得其解,待专家给予解释...
在项目中遇到CLOB文本字符集的处理,但在处理CLOB字符的时候,我不用DBMS_CLOB包里的函数,而直接用
SUBSTR(RESULT VARCHAR2
STR1 IN VARCHAR2
POS IN BINARY_INTEGER
LEN IN BINARY_INTEGER) ,
INSTR()
TRIM()
...
...
等字符串处理函数来处理CLOB字符串,为什么能正常返回字符串结果呢? VARCHAR2 不是最大支持32676字节吗?但我的CLOB里的字符远超过这个数字,真的很让我纳闷了。
--------------------
举个例来说明
DECALRE V_AAA CLOB;
BEGIN
SELECT SUBSTR(A,1,500000) INTO V_AAA FROM TABLE_1; /* TABLE_1表中字段A的字符长度有200多万 */
DBMS_OUPT.PUT_LINE(LENGTH(V_AAA)); /* 输出结果是正确的,为 500000 */
END;
SUBSTR()函数为什么没截断字符呢?? 不理解....
如果 DECALRE V_AAA CLOB; 申明为 DECALRE V_AAA VARCHAR2(32767);
那么是不能赋值上去了。....
难道SUBSTR()函数也能处理大字符串数据?????那还要DBMS_LOB包做什么呢??