精华内容
下载资源
问答
  • numeric转换为数据类型numeric是出现算术溢出错误   相信很多朋友都遇到过这样的问题,今天我也痛苦了好长时间.从网上得到的答案无非就是把这个标题解释一下,以便傻到我这种程度的人都能看明白,可惜我没看到有谁...

    将numeric转换为数据类型numeric是出现算术溢出错误 
            相信很多朋友都遇到过这样的问题,今天我也痛苦了好长时间.从网上得到的答案无非就是把这个标题解释一下,以便傻到我这种程度的人都能看明白,可惜我没看到有谁说到了点子上,希望本文能对您有点启发.

            其实说到最根本,就是大家对sql的一些最基本的概念还不清晰,大多数这种溢出都是由这个原因造成的.为了帮助和我"傻平"程度差不多的兄弟们,我就把今天遇到的问题拿出来,和大家一起分析一下.

            我遇到溢出是给一个numeric(12,4)这个类型的列赋值(通过临时构造的dataset而非强类型的dataset,如果是强类型就不会这么痛苦了).为了方便描述,暂且把这个字段叫做price.numeric(12,4)这个定义有多少人能够准确的描述出其含义呢?正是对这个基本概念的模糊才遇到了今天的问题.其实我做的是一个excel的数据导入,为了验证其数据的正确性,我还特此写了正则,避免将脏数据存到数据库中.我的正则是这样的 ^((([0-9]?)|[1-9][0-9]{0,11})([.][0-9]{1,4})?)$ 设断点跟踪一切正常,只是在update的时候会报标题那个错误.

            看生成的实体类,对照数据库的字段,挨条跟踪数据,虽然抑郁很久,但还是没找到原因.逼急了,哥们我拿数据直接填到数据表里,结果出错了,到这个时候才明白一件事:numeric(12,4)的意思:说的通俗点就是:小数点前最多有8位,小数点后有四位,不足四位补0,超过4位小数则四舍五入.

    作者:wangchao1982 
    来源:CSDN 
    原文:https://blog.csdn.net/wangchao1982/article/details/1882571 
    版权声明:本文为博主原创文章,转载请附上博文链接!

    展开全文
  • 1 Caused by: com.microsoft.sqlserver.jdbc.SQLServerException: 将 numeric 转换为数据类型 numeric 时出现算术溢出错误。 2 at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(SQ...

    保存数据时控制台报错:

     1 Caused by: com.microsoft.sqlserver.jdbc.SQLServerException: 将 numeric 转换为数据类型 numeric 时出现算术溢出错误。
     2     at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(SQLServerException.java:216)
     3     at com.microsoft.sqlserver.jdbc.SQLServerStatement.getNextResult(SQLServerStatement.java:1515)
     4     at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.doExecutePreparedStatement(SQLServerPreparedStatement.java:404)
     5     at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement$PrepStmtExecCmd.doExecute(SQLServerPreparedStatement.java:350)
     6     at com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:5696)
     7     at com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConnection.java:1715)
     8     at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeCommand(SQLServerStatement.java:180)
     9     at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeStatement(SQLServerStatement.java:155)
    10     at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.executeUpdate(SQLServerPreparedStatement.java:314)
    11     at com.alibaba.druid.filter.FilterChainImpl.preparedStatement_executeUpdate(FilterChainImpl.java:2717)
    12     at com.alibaba.druid.filter.FilterAdapter.preparedStatement_executeUpdate(FilterAdapter.java:1052)
    13     at com.alibaba.druid.filter.FilterEventAdapter.preparedStatement_executeUpdate(FilterEventAdapter.java:491)
    14     at com.alibaba.druid.filter.FilterChainImpl.preparedStatement_executeUpdate(FilterChainImpl.java:2715)
    15     at com.alibaba.druid.proxy.jdbc.PreparedStatementProxyImpl.executeUpdate(PreparedStatementProxyImpl.java:106)
    16     at com.alibaba.druid.pool.DruidPooledPreparedStatement.executeUpdate(DruidPooledPreparedStatement.java:237)
    17     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    18     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    19     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    20     at java.lang.reflect.Method.invoke(Method.java:498)
    21     at org.hibernate.engine.jdbc.internal.proxy.AbstractStatementProxyHandler.continueInvocation(AbstractStatementProxyHandler.java:122)
    22     ... 91 more
    View Code

    数据库长度比例(SqlServer字段长度和比例指什么意思?)

    NUMERIC(P,S) P的默认值是:38 S的默认值是:-84~127
    numeric(a,b)函数有两个参数,前面一个为总的位数,后面一个参数是小数点后的位数,例如numeric(5,2)是总位数为5,小数点后为2位的数,也就是说这个字段的整数位最大是3位。

    前台传来的参数为格式不对

    添加前台文本框进行校验:

    1 οnkeyup= "if( !/^(((\d|[1-9]\d|[1-9]\d[1-8])(\.\d+)?)|(999(\.\d{1,2})?))$/.test(this.value)){
    2                            alertTip('不得超过1000,保留小数点后2位');
    3                            this.value='';
    4                        }"
    View Code

    后台接收参数后也要校验(略)

     

    展开全文
  • 解决速达软件提示将numeric转换为数据类型numeric时发生算术溢出错误问题 速达软件在查询库存报表提示出错信息如:将numeric转换为数据类型numeric时发生算术溢出错误 问题原因:货品的成本溢出,高于10亿的成本...

    解决速达软件提示将numeric转换为数据类型numeric时发生算术溢出错误问题

     

        速达软件在查询库存报表提示出错信息如:将numeric转换为数据类型numeric时发生算术溢出错误

        问题原因:货品的成本溢出,高于10亿的成本价,超出数据库范围.

        解决方法:对帐套反结帐2个月,然后给参考进价设为0的货品都加上真实参考进价,再重算成本。最后再结帐,问题解决。
        对帐套反结帐2个月,然后把成本核算方法是移动加权法的货品的成本核算方法均改为全月一次法,再重算成本。最后再结帐,问题解决。
        此问题会出现在速达以前版本如:速达3000STD,速达3000PRO,速达3000XP,速达5000,速达3G5000

     

        遇到的第二种情况:用户帐套设置为不允许负库存,开了采购单据以后,又开了几张销售单据,发现采购单据开错了,于是就把采购单据冲掉了。到了结算成本时,出现了上面的提示。

        解决问题的建议:直接把冲掉的单据删掉了,问题解决。

     

        遇到的第三种情况:之前一直能正常使用,再查库存报表时就出现上面的提示。

        了解使用情况:

        (1)帐套允许负库存。

        (2)开了50多个销售单,开了5个销售退货,没删除单据,没有冲掉单据。

        试用的办法:

        (1)删除5张销售退单,无效。

        (2)重启服务器,无效。

        (3)查询货品的加权价,正常价格8-30元,可是加权价高的达到5000多万,低的-9000多万。查看各种单据均正常。

        (4)删除所开的销售开单,当删了十个单据的时候,再查询就可以了。

        问题解决。

        原因:因为负库存,导致加权价不出现负数,超出软件允许的范围。

        解决问题的建议:

        (1)关掉允许负库存出库和结存。

        (2)先开销售订单,再执行订单。

        (3)通过比较销售订单、采购入库数量、销售开单(已执行数量)、未执行订单数量、帐面库存数量,来确定该不该补货。

          账面库存=采购入库数量—销售开单

          账面库存≠实际库存

       

         遇到的第四种情况: 新建帐套时,未对上期旧帐套进行进销存末结帐,导致期初库存初始化错误,出现成本单价出现负数和高于10亿的成本价现象,超出软件允许的范围, 而初始帐套不能反结帐.

         解决问题的建议:  

         通过 “资料--仓库--货品库存初始化”步骤,直接修改数量、成本单价、金额,再重算本期成本就可以了。         

    转载于:https://www.cnblogs.com/bingege/archive/2012/03/24/2415075.html

    展开全文
  • 出现此类问题一般都是 货品成本出现较大异常出现10亿级的成本 超出了字段定义长度,而出现这种结果的原因一般都是因为负库存出库。 解决办法 :找到这个货品出现异常值的单据时间及时修改库存避免负库存,并进行库存...

     

    出现此类问题一般都是 货品成本出现较大异常出现10亿级的成本  超出了字段定义长度,而出现这种结果的原因一般都是因为负库存出库。 解决办法 :找到这个货品出现异常值的单据时间及时修改库存避免负库存,并进行库存调价。

    避免此类情况出现的办法 1、不允许负库存 2.及时结账   3、成本异常时及时进行成本调整。

    也可以通过如下语句查询 异常成本对应的单据

     

    5000 select SRPTABLE1.price as '结转成本单价',SRPTABLE2.name as '货品名称' ,SRPTABLE2.code as '货品编码',SRPTABLE1.billcode as '单据单号' from aa_billflow SRPTABLE1 left join l_goods SRPTABLE2 on SRPTABLE2.goodsid = SRPTABLE1.goodsid   where SRPTABLE1.price>666666 or SRPTABLE1.price <-6666666 3000 select SRPTABLE1.eprice as '结转成本单价',SRPTABLE2.name as '货品名称' ,SRPTABLE2.code as '货品编码',SRPTABLE1.billcode as '单据单号' from detailbillflow SRPTABLE1 left join goods SRPTABLE2 on SRPTABLE2.goodsid = SRPTABLE1.goodsid   where SRPTABLE1.eprice>1 or SRPTABLE1.eprice <-1

     

    速达软件QQ:773692542

    展开全文
  • declare @temp table (AddTotalCostAmt numeric(19,9),CU_AddTotalBuildAmt numeric(19,9),CU_PredictCostRate numeric(9,7)) insert into @temp select 2035360.000000000,9600.000000000,0 select * from @...
  • 今天一个一直正常运行的软件突然溢出了,我就很奇怪。然后在调试的时候发现,sql语句有问题, where id = 010101 的时候就溢出了,然后我在010101前后加了一个单引号就好了,原因是正常情况下的ID是 = 123 这样的,...
  • 今天,在调试程序的时候,需要把textbox里面的值取出来和数据库的相...运行能成功,但是,在查询的时候,就会提示SQL异常“Sqlexception 将 varchar 转换为数据类型 numeric 时出现算术溢出异常 ”!弄了半天,都没有
  • nvachar都设置max了,为什么还会溢出
  • 今天遇到:将 varchar 转换为数据类型 numeric 时出现算术溢出错误。 经排查发现,数据库设计的字段的类型为decimal,长度为4,小数位为2。 需要写入的值为100,就会报溢出错误。 实际上原因是:100在decimal类中...
  • 这是将字符串类型转数字类型时发生的转换错误。 解决方法: 使用CAST(ISNULL(aa.tf004, 0) as NUMERIC(15,4) ),强转为数字类型之后,再进行加减乘除运算。
  • sqlserver2005存储过程中限制被除数不为0,局部代码如下 第 139 行 insert into #lyg select b.sStationNO, ...过程 usp_OilStationSaleMonth,第 139 行 在将 varchar 值 '21.42%' 转换成数据类型 int 时失败。
  • 今天修改数据库字段类型,把float转换成decimal类型。 找了好多资料都没从根本上解决问题。多亏了下面的这个blog http://blog.csdn.net/wangchao1982/article/details/1882571     主要原因:decimal(12,4)的意思:...
  • 出现问题的原因: 这个问题出现的原因是你varchar类型的数据是纯数字组成。并且这些纯数字个数大于5.超过Int或Bigint的范围.... 解决的办法:在由纯数字组成的字符串开始和末尾加上''。比如 Oid='1234567890' ...
  • 但这种转换有时候很容易出错,尤其是nvarchar转换numeric时。如果能够明确数据类型,最好显式转换。 举个我遇到的例子, SELECT * FROM ITEM_INFO_TEST WHERE OBJECT_NO=’2’ AND COL530 //COL530在数据库中...
  • decimal(18,8)小数点前面最多有10位 14321273753.14745900小数点前面有11位,超出10位了就会报这个错 参考 ... 修改为decimal(38,8),不报错了 select [dbo].[DiseaseData](303,3)   U...
  • declare @D decimal(18, 2) set @D=100.98 set @sql='UPDATE [dbo].[Money] SET [Wage] = '+@D+'where [AuditStateC]=''2''' ...以上语句报错:将 varchar 转换为数据类型 numeric 时出现算术溢出错误 是什么原因

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,511
精华内容 604
关键字:

numeric转换numeric算术溢出