varchar2有两个最大长度:一个是在字段类型4000;一个是在PL/SQL中变量类型32767.准确的说是在schema级varchar的长度类型限制为4000
案例:
CREATE OR REPLACE FUNCTION VAR_TEST RETURN VARCHAR2 IS
T_COL VARCHAR2(32767); --plsql变量的varchar2长度范围为1到32767
BEGIN
T_COL := LPAD('a', '4001', '1');
RETURN T_COL;
END;
SELECT VAR_TEST FROM DUAL;
ORA-06502: PL/SQL: 数字或值错误 : 字符串缓冲区太小
ORA-06512: 在 "TEST.FUNNY", line 6
ORA-06512: 在 "TEST.FUNNY", line 6
在长度超过限制的时候可以用clob类型来代替varcahr2类型作为函数返回值
来源:http://www.blogjava.net/wangbing/archive/2010/03/15/315482.html