Oracle ORA-06861: 文字与格式字符串不匹配 记录两次无助的遭遇:存储过程直接执行正常,java调用存储过程则报错

23 篇文章 1 订阅

一天之内,出现了两次这样的尴尬遭遇:将参数直接放到存储过程中执行时,程序运行正常,但是通过java程序去调用数据库存储过程时,就抛出异常。我和我的同事分别遇到了一次,但是,原因却大不相同。

先说说我的:)
通过前端点击按钮执行程序后,所报的错误居然不在存储过程内部,而是同一个包下,另一个验证程序所报验证失败错误。我反复检测了自己的java代码以及存储过程内部的代码,确定以及肯定自己没有去调用那个存储过程。最后发现,在公共方法中,居然将我所要处理的单据类型,提前调用了一次验证程序,所以程序还没执行到我自己的方法,其实就已经报错了。阿西吧,这种不能debug的开发方式,如果遇到bug,那是真滴。。。头大,部分代码如下:

if(sheet_type_id.equals("130")||sheet_type_id.equals("295")||sheet_type_id.equals("840")||sheet_type_id.equals("545")||sheet_type_id.equals("850")||sheet_type_id.equals("890")||sheet_type_id.equals("900")||sheet_type_id.equals("270")||sheet_type_id.equals("1040")){ 
//省略若干行
}

//省略若干行
//生产报工,完工入库或完工退库
if(sheet_type_id.equals("550")||"545".equals(sheet_type_id)){
				
  }

545的单据类型的处理方式是我写的,然后前面的代码是别人写的,所以也没多瞅,而错误也就是在这之前抛出的。

--------------------割-----------------------------------------
然后我同事遇到的问题更奇葩,也就是标题里的错误:ORA-06861: 文字与格式字符串不匹配
这个错误肯定是存储过程里面的错误,只有通过java代码调用存储过程的时候才会抛出来。但是,用plsql录入同样的参数调试了好几次居然什么异常都没有,百思不得其解!!?
在网上查询的ORA-06861的问题,大部分是由于TO_DATE函数相关的使用错误。然后我逐个检查存储过程中所有使用了TO_DATE的地方,还真有一个地方存在疑问,TO_DATE(?,‘YYYY-MM-DD HH24:MI:SS’),将问号处的传入参数的格式进行规范,然后测试,发现问题居然神奇的解决了。
现在想起这个问题,还是觉得非常诡异。但也提醒我们,在开发的时候,一定要注意规范。测试的时候没问题,不一定能经受住生产环境的压力。始终相信,觉得哪儿有问题但又说不出来个所以然的地方,肯定埋伏着bug。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

穿条秋裤到处跑

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值