新手一个~ 昨晚快下班 程序 遇到这个错误 郁闷了一天 总是解决不了
幸好在经理的帮助下解决了!!!
感觉很幸运能在刚工作的阶段遇到不错的领路人,帮助我成长、进步。感恩!!!
(还得继续努力、加油(ง •_•)ง)
好了,感慨完了,说正事。
百度了好多,下面链接 说 :
官方解释是: 想存入数据库的数据(包含数据,字符串等等)不符合该字段的定义(比如长度,约束等), 举个例子,就是说你想存一个空值到非空字段,如存入3位以上的数字到NUMBER(2)字段中,等等
官方解决方法是: 改变数据的类型,或长度,等等。
(105条消息) ORA-06502: PL/SQL: 数字或值错误 : 字符串缓冲区太小 错误分析_甲骨虫的家-CSDN博客_ora-06502:pl/sql:数字或值错误
我的程序:
CREATE OR REPLACE PROCEDURE...
IS
...
V_A VARCHAR2(200);
V_B VARCHAR2(20);
BEGIN
...
SELECT TRIM(CONCAT('AA',DN.SEQ_MODEL.NEXTVAL))
,ROW_SS.姓名 -- 程序开头定义了游标,这里使用到
INTO V_A
,V_B
FROM DUAL;
在plsql TEST WINDOW 运行程序
在 SELECT TRIM(CONCAT('AA',DN.SEQ_MODEL.NEXTVAL)) 这一行高亮,报错。
一直以为 V_A 这个变量 的长度有问题,折腾了好久,其实 V_A 这个变量 的长度没问题。然后就百思不得其解,不知道问题出现在哪。。
后来 发现原来 是 V_B 变量 长度的问题。加大 V_B VARCHAR2(20); 为V_B VARCHAR2(200) 就可以了 (按实际设置);
总结:不一定就是高亮的那一行出错,可能在那一行周围也有错,也得尝试调试!