asp.net使用oraclehelper访问oracle的程序包中的存储过程,在存储过程中的SQL中已经都加上round(x,2),在pl/sql develop中测试返回的结果集都是2位小数,但是使用oracledatareader返回数据时总是报OCI-22053溢出错误?随便插了两个变量赋值发现返回的都是有很多位小数的数据,请问是什么原因?

解决方案 »

  1.   

    SQL语句部分:
    select round(i.ivc_net_price,2) ivc_net_price,
           round(i.ivc_net_price_with_tax,2) ivc_net_price_with_tax,
           round(sum(i.curr_net_amt),2) curr_net_amt,
           round(sum(i.curr_tax_amt),2) curr_tax_amt,
           round(sum(i.curr_gross_amt),2) curr_gross_amt
    from CUSTOMER_ORDER_INV_ITEM i
    group by round(i.ivc_net_price,2),round(i.ivc_net_price_with_tax,2)ASP.NET程序部分:
    using (OracleDataReader rdr = OracleHelper.ExecuteReader(OracleHelper.ConnectionStringLocalTransaction, CommandType.StoredProcedure, SP_SALES_INFO_BY_SALES_GROUP, parms))
                {
                    while (rdr.Read())
                    {
                        SalesAmountInfo salesinfo = new SalesAmountInfo();
                        salesinfo.Contract = contract;
                        salesinfo.StartDate = startDate;
                        salesinfo.EndDate = endDate;
                        salesinfo.IvcNetPrice = System.Convert.ToDecimal(rdr[0]);
                        //decimal y = System.Convert.ToDecimal(rdr[0]);
                        salesinfo.IvcNetPriceWithTax = System.Convert.ToDecimal(rdr[71]);
                        salesinfo.CurrNetAmt = System.Convert.ToDecimal(rdr[2]);
                        salesinfo.CurrTaxAmt = System.Convert.ToDecimal(rdr[3]);
                        salesinfo.CurrGrossAmt = System.Convert.ToDecimal(rdr[4]);
                        salesInfoBySalesGroup.Add(salesinfo);
                    }
                }
    那个y总是很长小数位 的数值,请问是为什么?
      

  2.   

    上一楼的rdr[71]是rdr[1]~为什么没权限修改?
      

  3.   

    你oracle中字段的数据类型是什么?
      

  4.   

    去数据库社区问问!!
    我没用过Oracle!!
      

  5.   

    用过to_char()了,还是溢出,还就是那一个字段,想不明白