Sql &引用;算术“;操作导致溢出

Sql &引用;算术“;操作导致溢出,sql,vb.net,oracle,Sql,Vb.net,Oracle,我试图将我的应用程序运行的SQL查询返回的一些信息复制到DataTable进行后期处理,然后输出到平面文件 为此,我尝试使用OracleDataAdapter和OracleDataReader。这两个查询都会遇到查询返回的四个值中的第三个值出现问题。此值是服务器上作业使用的CPU百分比。通常,它返回的值小于0.1。我已经将DataTable的相关列设置为Double,但是当我尝试为一行填充该列时,我被告知“算术运算导致溢出” 这没有意义A)因为它是一个直集dr.Item(c)=odr.Item(

我试图将我的应用程序运行的SQL查询返回的一些信息复制到DataTable进行后期处理,然后输出到平面文件

为此,我尝试使用OracleDataAdapter和OracleDataReader。这两个查询都会遇到查询返回的四个值中的第三个值出现问题。此值是服务器上作业使用的CPU百分比。通常,它返回的值小于0.1。我已经将DataTable的相关列设置为Double,但是当我尝试为一行填充该列时,我被告知“算术运算导致溢出”

这没有意义A)因为它是一个直集
dr.Item(c)=odr.Item(c)
(dr是我正在填充的表的行,odr是数据读取器)。那里根本没有数学;B) 即使我尝试将值强制转换为字符串,这样我就可以看到它是什么,并尝试根据它找出问题所在,我也会收到该错误。上次我检查字符串的转换不是算术

生成该值的SQL是:
(总和(会话cpu/100)/(119*1*60*60)*100)cpu的pct\U

这在执行SQL时不会导致错误,并通过Toad返回fine

查询步骤的完整代码为。TableFill函数如下所示:

Public Function TableFill(ByVal odr作为Oracle.DataAccess.Client.OracleDataReader,ByVal d作为DataStore)作为布尔值
Dim ret作为布尔值=False
尺寸c为整数=0
Dim dr As Data.DataRow
将n变暗为字符串
尝试
“检查数据
如果odr.HasRows那么
odr.Read()时执行此操作
'(重新)设置c并声明新的数据行
c=0
dr=d.DT.NewRow
'n=“”
'遍历列
c
Sum(sessionpu/100)为什么要对一个被100除的值调用Sum?此外,它看起来像是缺少了一个括号或是它们的顺序不正确,因为简单地说,它的内容是(x/y*z)。我不认为你有什么(浮点)理由去除以100,然后在最后再乘以。布兰登,总的来说,那一分钟有很多来自特定应用程序类型的作业,它们的CPU使用正在聚合。虽然我可以将等式简化为总和(cpu/100)/42840000,但这些并列关系是一致的。Shawn,前100个将值转换为百分比(我想)。老实说,这段SQL是从拉取数据的人那里继承来的,如果可以避免的话,我不想胡闹,只是为了确保数据保持一致。如果c>=dr.ItemArray.Count,试着输入
,然后在
dr.item(c)之前抛出新的ArgumentOutOfRangeException(“索引大于项数组”)
=odr.Item(c).ToString
位。不幸的是,它没有命中ArguementOutOfRange行。不过,这是有道理的,表是硬编码的,在创建后不久以及遇到错误c=2时添加了4列。