昨天在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. P3853 [TJOI2007]路标设置

    传送门 思路: 类似于数列分段的二分查找答案.设目前的 mid 是一个最小的“空旷指数”,那么在 sum 数组(路标数组)里每两个相邻间的路标距离一定要小于等于目前的 mid , 如果大于,那就必须使 ...

  2. 关于System.in如何执行的问题

    import java.io.IOException; public class Test1 { public static void main(String[] args) throws IOExc ...

  3. 设计模式(七)Adapter Pattern适配器模式

    适用场景:旧系统的改造升级 实际场景:java.io.InputStreamReader(InputStream)等 1.一个被适配的类 package com.littlepage.AdapterP ...

  4. 排序——选择排序(java描述)

    百度百科的描述如下:选择排序(Selection sort)是一种简单直观的排序算法.它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后,再从剩余未排序元 ...

  5. idel 快捷键 记录

    1.找到实现一个类或者接口子类的快捷键 ctrl + B父类或父方法定义 ctrl + alt + B子类或子方法实现 2.跳转上次 下次 操作 ctrl + alt + -->  / < ...

  6. [jQuery] 判断复选框checkbox是否选中checked

    返回值是true/false method 1: $("#register").click(function(){ if($("#accept").get(0) ...

  7. oracle查看表中否存在某字段,数据库是否存在某张表

      数据库是否存在某字段 SELECT COUNT(*) FROM USER_TAB_COLUMNS WHERE TABLE_NAME = '表名' AND COLUMN_NAME = '字段名'; ...

  8. Android 和 JS交互方法初探

    起初有个需求,就是需要监听网页的图片点击,然后图片单独跳转到另一个页面单独显示 这里就需要用JS和Android Native方法之间的通信 先说上面的解决办法之前先引出两个Android的方法 1: ...

  9. Confluence 6 编辑一个空间的配色方案

    空间默认继承全局的配色方案.但是,如果你是空间管理员的话,你可以对默认继承的全局方案进行调整,使用自定义的配色方案. 为一个空间修改配色方案: 进入空间后,然后从边栏的底部选择 空间工具(Space ...

  10. Django的form组件

    forms组件 forms组件,是一个类.在视图函数中创建一个类,类需要继承forms.Form from django import  forms 1.校验数据 步骤和语法: 1. 创建一个form ...