帮同事看一个问题,在更新一个view的时候,触发了一些列的triggers,最后得到的错误信息就是ORA-06502: numeric or value error. 刚开始一直以为是在往表里插入数据的时候,是不是哪个列的类型不匹配造成的。注释了很多地方,都不奏效。
无奈之下,只好用了下SQL Developer的debug功能,最后终于发现问题所在,是因为往一个varchar2的变量里面放数据的时候,超过了长度限制!!!
这个错误很好重现,如下
SQL> declare
2 v_name varchar2(3);
3 begin
4 v_name := 'Frank';
5 end;
6 /
declare
*
ERROR at line 1:
ORA-06502: PL/SQL: numeric or value error: character string buffer too small
ORA-06512: at line 4
从这个错误信息可以看出,还有个后半段叫 character string buffer too small
但是调的那段代码给出的错误信息却没有这个后半段,因此刚开始找错了方向!!
借此博文,记下这个错误!