C# 连接ORACLE数据库,执行查询提示“算术运算导致溢出。”
2013-09-25 17:29
1226 查看
同事问了一个问题,访问oracle数据库,执行查询语句,提示”System.OverflowException: 算术运算导致溢出。“
环境:c# + ORACLE 10g client
操作中他同时执行了多条sql语句,第一条 语句查询的是基础信息,可以执行通过,从第二条开始都是统计运算的结果,执行报错。
异常详细信息如下:
System.OverflowException: 算术运算导致溢出。
在 Oracle.DataAccess.Types.DecimalConv.GetDecimal(IntPtr numCtx)
在 Oracle.DataAccess.Client.OracleDataReader.GetDecimal(Int32 i)
在 Oracle.DataAccess.Client.OracleDataReader.GetValue(Int32 i)
在 Oracle.DataAccess.Client.OracleDataReader.GetValues(Object[] values)
在 System.Data.ProviderBase.DataReaderContainer.CommonLanguageSubsetDataReader.GetValues(Object[] values)
在 System.Data.ProviderBase.SchemaMapping.LoadDataRow()
在 System.Data.Common.DataAdapter.FillLoadDataRow(SchemaMapping mapping)
在 System.Data.Common.DataAdapter.FillFromReader(DataSet dataset, DataTable datatable, String srcTable, DataReaderContainer dataReader, Int32 startRecord, Int32 maxRecords, DataColumn parentChapterColumn, Object parentChapterValue)
在 System.Data.Common.DataAdapter.Fill(DataSet dataSet, String srcTable, IDataReader dataReader, Int32 startRecord, Int32 maxRecords)
在 Oracle.DataAccess.Client.OracleDataAdapter.Fill(DataSet dataSet, String srcTable, IDataReader dataReader, Int32 startRecord, Int32 maxRecords)
在 Oracle.DataAccess.Client.OracleDataAdapter.Fill(DataSet dataSet, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior)
在 System.Data.Common.DbDataAdapter.Fill(DataSet dataSet)
一开始认为要么是程序的问题,要么是数据库的问题,百度、谷歌一番,一直没有解决问题,折腾了半下午,将要放弃的时候,突然想起他执行sql语句的结果,有的有十几位小数,有的没有小数,会不会是小数位数的问题呢?然后给每一个统计结果列都加上round,测试结果,很是意外,竟然执行通过了!
仔细想想,这是对的,数据库运算有数据库的精度,开发程序有开发 程序的精度,虽然一般情况不会出问题,但这次例外啦!所以,利用sql做数据库统计的时候,还真要控制精度在一个常规的范围之内。。。。
环境:c# + ORACLE 10g client
操作中他同时执行了多条sql语句,第一条 语句查询的是基础信息,可以执行通过,从第二条开始都是统计运算的结果,执行报错。
异常详细信息如下:
System.OverflowException: 算术运算导致溢出。
在 Oracle.DataAccess.Types.DecimalConv.GetDecimal(IntPtr numCtx)
在 Oracle.DataAccess.Client.OracleDataReader.GetDecimal(Int32 i)
在 Oracle.DataAccess.Client.OracleDataReader.GetValue(Int32 i)
在 Oracle.DataAccess.Client.OracleDataReader.GetValues(Object[] values)
在 System.Data.ProviderBase.DataReaderContainer.CommonLanguageSubsetDataReader.GetValues(Object[] values)
在 System.Data.ProviderBase.SchemaMapping.LoadDataRow()
在 System.Data.Common.DataAdapter.FillLoadDataRow(SchemaMapping mapping)
在 System.Data.Common.DataAdapter.FillFromReader(DataSet dataset, DataTable datatable, String srcTable, DataReaderContainer dataReader, Int32 startRecord, Int32 maxRecords, DataColumn parentChapterColumn, Object parentChapterValue)
在 System.Data.Common.DataAdapter.Fill(DataSet dataSet, String srcTable, IDataReader dataReader, Int32 startRecord, Int32 maxRecords)
在 Oracle.DataAccess.Client.OracleDataAdapter.Fill(DataSet dataSet, String srcTable, IDataReader dataReader, Int32 startRecord, Int32 maxRecords)
在 Oracle.DataAccess.Client.OracleDataAdapter.Fill(DataSet dataSet, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior)
在 System.Data.Common.DbDataAdapter.Fill(DataSet dataSet)
一开始认为要么是程序的问题,要么是数据库的问题,百度、谷歌一番,一直没有解决问题,折腾了半下午,将要放弃的时候,突然想起他执行sql语句的结果,有的有十几位小数,有的没有小数,会不会是小数位数的问题呢?然后给每一个统计结果列都加上round,测试结果,很是意外,竟然执行通过了!
仔细想想,这是对的,数据库运算有数据库的精度,开发程序有开发 程序的精度,虽然一般情况不会出问题,但这次例外啦!所以,利用sql做数据库统计的时候,还真要控制精度在一个常规的范围之内。。。。
相关文章推荐
- 【Oracle】C# 执行SQL时算术运算导致溢出
- 运行窗体跳转时提示未处理System.OverflowException HResult=-2146233066 Message=算术运算导致溢出。 Source=DevExpress.U
- C#使用oledb连接excel执行Insert Into语句出现“操作必须使用一个可更新的查询”的解决办法
- C#连接oracle数据库执行简单的增删改查操作
- 连接oracle数据库,执行ssh命令,然后把查询结果反写数据库-批量处理管理测试设备
- ado执行sql查询出现“发送数据流时出现算术溢出”错误
- c#开发连接oracle数据库查询条件中含汉字但是查不到数据
- 自己写的个C#(ASP.NET)连接SQL数据库执行查询和修改操作的类
- c#Winform程序调用app.config文件配置数据库连接字符串 SQL Server文章目录 浅谈SQL Server中统计对于查询的影响 有关索引的DMV SQL Server中的执行引擎入门 【译】表变量和临时表的比较 对于表列数据类型选择的一点思考 SQL Server复制入门(一)----复制简介 操作系统中的进程与线程
- C# 连接数据库MySql并执行查询命令
- C#连接Oracle数据库(直接引用dll使用),查询数据
- C#连接oracle数据库执行简单的增删改查操作
- C#中连接Oracle数据库时提示OCIEnvCreate 失败,返回代码为 -1,但错误消息文本不可用。
- ado执行sql查询出现“发送数据流时出现算术溢出”错误
- c#使用Oracle数据库执行多条查询语句,非存储过程方法
- when:执行SP时候,提示错误7405:异类查询要求为连接设置ANSI_NULLS和ANSI_WARNINGS选项
- c#使用Oracle数据库执行多条查询语句,非存储过程方法
- C#连接Oracle数据库查询数据
- C# 简单连接数据库并执行SQL查询语句
- 【C#】解决lucene.net在建立索引的时候,出现“算数运算导致溢出”stackoverflow exception的错误