笔者最近在使用TSQLStoredProc调用Oracle存储过程时发现,即使存储过程体为空时,都会发生 BCD Overflow 错误,该表部分定义如下:

PLANE_ALL_PARAMETER表:

字段名 数据类型
PLANE_MODEL_ID NUMBER
NATURAL_FLY_WEIGHT  FLOAT
NOLOAD_WEIGHT FLOAT
MAX_FUEL_WEIGHT FLOAT
…… ……

在存储过程的参数表中,做如下定义:
procedure update_plane_model(
   ModelID in PLANE_ALL_PARAMETER.PLANE_MODEL_ID%type,
   NaturalFlyWeight in PLANE_ALL_PARAMETER.NATURAL_FLY_WEIGHT%type,
   NoLoadWeight in PLANE_ALL_PARAMETER.NOLOAD_WEIGHT%type,
   MaxFuelWeight in PLANE_ALL_PARAMETER.MAX_FUEL_WEIGHT%type,
   ……
);

并且在设置参数时使用如下方式:

ParamByName('NaturalFlyWeight').AsFloat :=  PlaneModelInfo^.NATURAL_FLY_WEIGHT ;
    ParamByName('NoLoadWeight').AsFloat := PlaneModelInfo^.NOLOAD_WEIGHT;
    ParamByName('MaxFuelWeight').AsFloat := PlaneModelInfo^.MAX_FUEL_WEIGHT;

这样在调用该存储过程时就会发生此错误,笔者发现如果使用AsBCD方式赋值,而不是使用AsFloat就可以避免发生 BCD Overflow 错误。

ParamByName('NaturalFlyWeight').AsBCD :=  PlaneModelInfo^.NATURAL_FLY_WEIGHT ;
    ParamByName('NoLoadWeight').AsBCD := PlaneModelInfo^.NOLOAD_WEIGHT;
    ParamByName('MaxFuelWeight').AsBCD := PlaneModelInfo^.MAX_FUEL_WEIGHT;

看来dbExpress虽好,但也是问题多,估计在SQL Server上不会存在这样的问题,不知道Sysbase和DB2上有没有,大家可以试试!

转载于:https://www.cnblogs.com/heqing/archive/2007/01/25/630034.html

关于调用Oracle存储过程时发生“BCD Overflow”错误的处理相关推荐

  1. php保存成乱序,php – 调用MySQL存储过程时出现乱序错误

    我正在尝试使用PDO调用存储过程,但在尝试对结果进行获取时遇到以下错误. 警告:数据包乱序.预计1收到16.数据包大小= 163 我的存储过程使用两个游标,我在从临时表中选择之前关闭它.我怀疑这可能是 ...

  2. mybatis 调用 oracle 存储过程 select into 无记录时NO_DATA_FOUND异常处理分析

    mybatis 调用 oracle 存储过程 select into 无记录时NO_DATA_FOUND异常处理分析 参考文章: (1)mybatis 调用 oracle 存储过程 select in ...

  3. 服务器无法继续该事务 3400000006 错误原因--JAVA调用SQLSERVER存储过程时过程发生异常内部事务未

    通过JAVA调用SQLSERVER存储过程时,存储过程内部发生了类型转换异常,在类型转换异常发生之前已经将事务打开了,并且在类型转换那一行没有采用像如下错误处理: if @@error<> ...

  4. spring+springMvc+mybatis 调用oracle 存储过程

    最近在项目中遇到在mybatis中调用oracle存储过程的问题,网上各种查询,最终解决了问题,在我们项目中我只需要oracle 的存储过程返回一个字符串用来存入数据库作为表数据的主键, 接下来整理代 ...

  5. java c3p0 存储过程_JAVA Spring 连接池 调用 Oracle 存储过程的问题?

    求助,JAVA Spring 连接池 调用 Oracle 存储过程的问题?在Spring中配置了c3P0的连接池,在调用Oracle的存储过程时,报错[code]java.lang.ClassCast ...

  6. SQL那些事儿(十四)--C#调用oracle存储过程(查询非查询and有参无参)深度好文

    最近老总让使用存储过程,说这个比较好用,抓起本oracle书看了看,写存储过程不是很难,但是写了存储过程调用的时候遇到许多问题,经过一天时间,把各种能遇到i的问题基本总结了下,跟大家分享. 照例画了张 ...

  7. java调用存储过程 oracle_java调用oracle存储过程

    java调用oracle存储过程 java代码 Map param = new HashMap(); param.put("in_str", "1,2,3,4" ...

  8. C#调用Oracle存储过程分页

    直接调用Oracle中的存储过程完成对表的分页,对代码封闭程度高,执行高效.以下为C#分页类代码,包括Oracle数据库 端存储过程PLSQL代码. //    程序调用示例: // int tota ...

  9. 调用方法[manageapp]时发生异常_探讨通过Feign配合Hystrix进行调用时异常的处理

    原文作者作者:任聪 前言:此文所述处理方式为本人在实践过程中研究分析得出的一种解决方案. 本文不仅希望能为 SC 学习者提供一种如题问题的一种解决方案,并且希望通过本文引出各位 SC 的朋友对如题问题 ...

最新文章

  1. executing an update/delete query问题
  2. 模板:SharePoint2007解决方案包
  3. Java中几种输出数组的for循环,以及循环中使用标签(非goto)
  4. Python机器视觉编程常用数据结构与示例
  5. HDU 4292 Food (成都赛区网络赛第五题,拆点网络流)
  6. 约束规划问题与凸二次规划
  7. java xcap,xcap发包工具的简单使用2(发送报文)
  8. /proc文件系统详解
  9. 小众软件android,七款优秀的小众软件,每款都是装逼神器!
  10. 上个厕所的功夫,搞懂MySQL事务隔离级别,Java学习视频百度云盘
  11. s+清辅音,读作对应的浊辅音
  12. CISP查询具体步骤
  13. 赢在测试2:中国软件测试专家访谈录
  14. Java(9)接口练习 运动员和教练
  15. 百度地图绘制多段 驾车路线
  16. 【博学谷学习记录】超强总结,用心分享| 数据仓库
  17. 初学者——Java之实现简易俄罗斯方块
  18. kml文件转成cvs_如何将excel转换成kml
  19. Google Calendar 跨平台同步方案(随时同步手机与电脑的日程安排)
  20. 微信公众平台开发(3)--成为开发者并购置服务器环境

热门文章

  1. LeetCode 381. O(1) 时间插入、删除和获取随机元素 - 允许重复(vector + 哈希)
  2. LeetCode 1496. 判断路径是否相交(set)
  3. LeetCode 506. 相对名次(map)
  4. LeetCode 876. 链表的中间结点(快慢指针)
  5. LeetCode 589. N叉树的前序遍历(前序遍历)
  6. 数据结构--图 Graph
  7. argumentoutofrangeexception:长度不能小于0_数组长度属性背后的魔力有哪些?
  8. 7.排序、聚合函数、分组查询
  9. Oracle数据库逻辑存储结构管理相关问题与解决
  10. 史上最全提升GPU的tricks合集