OleDb驱动调用Oracle存储过程出错:ORA-06502

  好久没来这里写东西了,一直忙着修改系统的Bug和准备考试。大部分时间都用来学习项目管理的知识,新技术也研究和应用的少了,都不知道写点什么东西可好,也没有要写的东西了。

     正好这几天在修改Bug过程中遇到了一个棘手的问题,数据库采用的是Oracle 10g,应用服务器的数据库客户端是Oracle 9i。连接数据库是采用OleDb驱动方式,服务器上必须要安装Oracle的Oledb驱动补丁,否则就会出错,之前也是因为没安装这个驱动,遇到了很大麻烦,也花费了好多精力去解决问题。

  在一个功能中需要调用存储过程,返回过程处理结果,没有其它任何操作,跟踪执行到ExecuteNonQuery();时,就会执行异常处理,存储过程完全正确,显示错误如下:

  ORA-06502: PL/SQL: numeric or value error: character string buffer too small
  ORA-06512: At PUBLISH_ORG_MONTHLY, line 291
  ORA-01461: can bind a LONG value only for insert into a LONG Column
  ORA-06512: at line 1
 
  之前也找了各种方法解决都没有成功,还以为是因为Oracle版本不一致,或者ODAC1020221-OLEDB驱动补丁不一致的原因造成,迫于无奈,把Oracle 9i卸了,重新装了10g和驱动补丁,结果调用存储过程操作还是不通过。

  没办法了,下班时间也到了,第二天在解决吧。好像早上一来,头脑也清醒了许多,就检查了一下代码中给存储过程传递参数的代码,发现参数名称和存储过程里是一致的,惊讶的还发现有个参数顺序和存储过程里的不一致,然后就立马调整顺序,结果就执行通过了。

  心里的一块石头总算是放下了,因为系统25号就要上线呀,不解决这几天日子可都不好过~~~

  这也算是一个经验吧,拿出来与大家共同分享,也提醒自己以后别在犯类似的错误,这样可以节省好多精力。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值