0
点赞
收藏
分享

微信扫一扫

ORA-06502: PL/SQL: 数字或值错误 : 字符串缓冲区太小

颜娘娘的碎碎念 2022-02-11 阅读 115
oracleplsql

新手一个~ 昨晚快下班 程序 遇到这个错误 郁闷了一天 总是解决不了

幸好在经理的帮助下解决了!!!

感觉很幸运能在刚工作的阶段遇到不错的领路人,帮助我成长、进步。感恩!!!

(还得继续努力、加油(ง •_•)ง)

好了,感慨完了,说正事。

百度了好多,下面链接 说 :

官方解释是: 想存入数据库的数据(包含数据,字符串等等)不符合该字段的定义(比如长度,约束等), 举个例子,就是说你想存一个空值到非空字段,如存入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) 就可以了 (按实际设置);

总结:不一定就是高亮的那一行出错,可能在那一行周围也有错,也得尝试调试!

举报

相关推荐

0 条评论