当前位置:首页 > 个人杂谈 > 正文内容

ORA-06502: PL/SQL: 数字或值错误

作者: 葛屹肃 | 日期: 2022-06-16 | 分类: 个人杂谈

前天提及项目上线问题,经分析后,发现其中有一个是数据库执行过程出现异常而引起的,报错信息为:ORA-06502: PL/SQL: 数字或值错误。

这种错误以往有碰到过的,详细信息如下:

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

有经验的朋友都知道,这个是由于变量定义的字符长度不足引起的,不过,一个过程的SQL太长的话,要定位那个变量出问题也是很麻烦的。

我的做法是,在过程新增一个OUT参数,将这个OUT参数在过程从头至尾逐段SQL赋不同值,看看在那段SQL出现异常而退出,那么,可定位到异常的SQL。

再看该段SQL所使用的变量,有那一个可能出现长度不足的,这个只要查询一下数据就可发现的。

经测试发现,原来问题出在一个系统参数,这个参数用于提示用户包装是珍珠棉还是纸板,预定义长度为200,结果用户填写超出50个客户代码,每个客户代码是5位再加上一位分隔符,已经超出200的长度,因此,每次执行这个过程都会出现异常。

发现问题后,将变量长度改为2000后,恢复正常,也咨询过用户,这个参数要加入的客户代码肯定不会超过100个的,2000的长度完成足够。

这个问题完美解决了,另外一个问题,由于偶然才会出现,目前已经增加了操作日志,以便出现问题时进行排查。

版权声明:本文由〖葛屹肃〗发布,转载请注明出处!
文章链接:https://www.geyisu.com/2634.html

  • 评论:(0)

已有 0 位网友发表了一针见血的评论,你还等什么?

◎欢迎大家参与讨论