昨天在C#执行oracle的sql语句时,总是报错,原先在pl/sql 执行sql语句是可以的,在C#执行就报“算术运算导致溢出”问题

SQL语句

select A.SKU_ID 商品标识,A.COLOR 货主编码,B.NAME 货主名称,C.NAME 商品名称,A.RCV_DATE_TIME 入库日期,A.XPIRE_DATE 失效日期,
TO_NUMBER(TO_DATE(sysdate,'yyyy-mm-dd hh24:mi:ss')- TO_DATE(A.RCV_DATE_TIME,'yyyy-mm-dd hh24:mi:ss')) 入库天数,
TO_NUMBER(TO_DATE(A.XPIRE_DATE,'yyyy-mm-dd hh24:mi:ss')- TO_DATE(sysdate,'yyyy-mm-dd hh24:mi:ss')) 效期天数
from C_INV_3PL@TMS20_TEST A
left join Dxc_Consignor B on A.COLOR= B.CODE
left join Dxc_Goods C on A.SKU_ID = C.WMSCODE
where B.MID=22 and C.IMPORTANCE=1

SQL查询结果

在C#执行时,log日志异常信息

-- ::, [] DEBUG Sys - select * from
(
select A.SKU_ID 商品标识,A.COLOR 货主编码,B.NAME 货主名称,C.NAME 商品名称,A.RCV_DATE_TIME 入库日期,A.XPIRE_DATE 失效日期,
TO_NUMBER(TO_DATE(sysdate,'yyyy-mm-dd hh24:mi:ss')- TO_DATE(A.RCV_DATE_TIME,'yyyy-mm-dd hh24:mi:ss')) 入库天数,
TO_NUMBER(TO_DATE(A.XPIRE_DATE,'yyyy-mm-dd hh24:mi:ss')- TO_DATE(sysdate,'yyyy-mm-dd hh24:mi:ss')) 效期天数
from C_INV_3PL@TMS20_TEST A
left join Dxc_Consignor B on A.COLOR= B.CODE
left join Dxc_Goods C on A.SKU_ID = C.WMSCODE
where B.MID= and C.IMPORTANCE=
)
where fluentdata_RowNumber between and
order by fluentdata_RowNumber
-- ::, [] ERROR ServiceDXC_MAINTAIN - 获取动态列表失败
System.OverflowException: 算术运算导致溢出。

最后,百度一下,终于知道原因了。

问题原因:

Oracle的精度和C#之间的精度是不一致的,因为我的SQL语句用到计算两个日期相差天数的函数(TO_NUMBER),

在pl/sql中执行看到小数位非常长,这个是导致C#执行出错的原因。

解决方法:

  在原先计算函数前面添加Round()函数,用来把精度降低到可一定范围。

select A.SKU_ID 商品标识,A.COLOR 货主编码,B.NAME 货主名称,C.NAME 商品名称,A.RCV_DATE_TIME 入库日期,A.XPIRE_DATE 失效日期,
round(TO_NUMBER(TO_DATE(sysdate,'yyyy-mm-dd hh24:mi:ss')- TO_DATE(A.RCV_DATE_TIME,'yyyy-mm-dd hh24:mi:ss')),2)入库天数,
round(TO_NUMBER(TO_DATE(A.XPIRE_DATE,'yyyy-mm-dd hh24:mi:ss')- TO_DATE(sysdate,'yyyy-mm-dd hh24:mi:ss')),2) 效期天数
from C_INV_3PL@TMS20_TEST A
left join Dxc_Consignor B on A.COLOR= B.CODE
left join Dxc_Goods C on A.SKU_ID = C.WMSCODE
where B.MID=22 and C.IMPORTANCE=1

PS:   使用oracle计算函数时(AVE()、TO_NUMBER()、SUM()等),都可用round()来把精度降低

C#执行Sql 时,出现“算术运算导致溢出”问题,如何解决?的更多相关文章

  1. 使用sqlplus执行sql时,发现有中文有乱码解决方法

    https://blog.csdn.net/fyyinjing/article/details/77877239

  2. sql语句执行时算术运算导致溢出。

    执行sql语句时报错: 用户代码未处理 System.OverflowException HResult=-2146233066 Message=算术运算导致溢出. 文章:https://bbs.cs ...

  3. 执行sql时出现错误 extraneous input ';' expecting EOF near '<EOF>'

    调用jdbc执行hive sql时出现错误 Error while compiling statement: FAILED: ParseException line 5:22 extraneous i ...

  4. 执行SQL时出现: ORDER BY clause is not in GROUP BY clause and contains nonaggregated c

    注意: 采用navicat新建数据库时,需要将编码方式设置为,字符集:utf8 -- UTF-8 Unicode ,排序规则:utf8_general_ci 在运行sql语句时,出现以下问题: [Er ...

  5. C#报算术运算导致溢出的错误

    如果是在fill datatable时报这个错,是因为所查询的数据中有在数据库中为NUMBER类型的字段,这种类型C#中不能识别,需TO_CHAR转换成字符型,就不会再报这个错了. e.g. SELE ...

  6. iBatis应用--控制执行SQL时的超时时间

    https://blog.csdn.net/jackie_xiaonan/article/details/8459320

  7. 【转】.net算术运算导致溢出

    源地址:http://blog.csdn.net/hawksoft/article/details/70470136

  8. SQL执行SQL语句提示 "内存不足"(insufficient memory....)的解决方法

    由于本地执行的sql script的文件太大但是本地sql的运行内存有限,当我在MSSql的工具上运行这份178M左右的脚本的时候 它会提示 如下错误(Insufficient memory to c ...

  9. 对hadoop 执行mapreduce时发生异常Illegal partition for的解决过程

    来自:http://blog.csdn.net/hezuoxiang/article/details/6878026 写了个mapreduce的JAVA程序,自定义了个partition class ...

随机推荐

  1. MySQL中字符串和数字拼接

    select * from qa_employ where EMPLOY_GROUP =2 原先雇佣表中所有雇佣姓名全部是"张三", 希望将雇用姓名变得不一样,比如张三+id SQ ...

  2. sql 中常见的控制流语句

    控制流语句:1 begin .....end  2 if ...else  例如:if exists (select * from 表名称 ) begin selct * from  表名称 end  ...

  3. Cross-site request forgery 跨站请求伪造

    Cross-site request forgery 跨站请求伪造 简称为CSRF或者XSRF,通过伪装来自受信任用户的请求来利用受信任的网站 攻击者盗用了你的身份,以你的名义发送恶意请求,对服务器来 ...

  4. [原][osg][osgearth]倾斜摄影2.文件格式分析:OSGB

    倾斜摄影三维模型格式包含:*.osgb,*.dae等 文件格式包含:*.xml, *.desc, *.lfp等 例如:LocaSpace Viewer软件把osgb分块模型文件建立索引生成一个lfp文 ...

  5. 学习笔记44—Linux下安装freesurfer

    第一步:安装ubuntu (略过) 第二步:下载freesurfer:从freesurfer的官方网站上下载:http://surfer.nmr.mgh.harvard.edu/fswiki/Down ...

  6. npm install 报错ERR! 404 Not Found: event-stream@3.3.6

    在win下开发的node工程,在linux下用dockerfile部署时,遇到npm install时报错 Step / : RUN npm install ---> Running in 2e ...

  7. So you want to be a computational biologist?

    So you want to be a computational biologist? computational biology course

  8. Java类成员变量的默认值

    1.布尔型(boolean)变量默认值为false,byte.short.int.long为0,字符型为'\u0000'(空字符),浮点型(float double)为0.0,引用类型(String) ...

  9. LeetCode--303--区域和检索 - 数组不可变

    问题描述: 给定一个整数数组  nums,求出数组从索引 i 到 j  (i ≤ j) 范围内元素的总和,包含 i,  j 两点. 示例: 给定 nums = [-2, 0, 3, -5, 2, -1 ...

  10. MVC,MVVM,MVP的区别/ Vue中忽略的知识点!

    按照顺序学习: https://scotch.io/courses/build-an-online-shop-with-vue/hello-world Vue Authentication And R ...