oracle函数 exp()和ln()的问题
selectexp(sum(ln(a.字段B)))fromtablea在人oracle里面运行没有问题,但是在.net程序里面就报算术什么溢出了,问题就在那个函数哪里有没...
select exp(sum(ln(a.字段B))) from table a 在人oracle里面 运行没有问题,但是在.net程序里面就报算术什么溢出了,问题就在那个函数哪里 有没有能解决的
功能就是求查出来的数据 字段B 所有值的乘积
有木有人 知道还有什么其他的方法实现没 用sql语句搞定
在plsql里面没有问题 但是在程序里面就出错了
貌似程序读取数据是在读取的时候才运行那个函数,如果运行完再读取数据的话就不会有问题了 展开
功能就是求查出来的数据 字段B 所有值的乘积
有木有人 知道还有什么其他的方法实现没 用sql语句搞定
在plsql里面没有问题 但是在程序里面就出错了
貌似程序读取数据是在读取的时候才运行那个函数,如果运行完再读取数据的话就不会有问题了 展开
1个回答
展开全部
你可以尝试把 .NET 程序 里面的, 保存 SQL 查询结果的那个 变量的数据类型, 修改一下。
我估计这个问题的原因,是因为 Oracle 的执行结果, 如果以 数值方式来存储的话, 可能超过了 .NET 程序的精度。
也就是 执行 SQL 的时候, 是不出错的。
出错在于, 将Oracle里面的执行结果, 赋值给 .NET 程序变量的时候, .NET 程序的变量的精度不足,不能保存 Oracle的查询结果, 因此报错了。
我估计这个问题的原因,是因为 Oracle 的执行结果, 如果以 数值方式来存储的话, 可能超过了 .NET 程序的精度。
也就是 执行 SQL 的时候, 是不出错的。
出错在于, 将Oracle里面的执行结果, 赋值给 .NET 程序变量的时候, .NET 程序的变量的精度不足,不能保存 Oracle的查询结果, 因此报错了。
追问
exp(sum(ln( 这三个函数一起执行完的话就不会有问题,但是我读取的时候好像是三个函数才开始执行,获取的结果不是三个函数执行完之后的结果,要是程序里面获取的是三个函数执行之后的结果就不会有问题了,执行ln() 函数的时候会变成一个小数点很多位的数,所以 就溢出了
追答
要不你
select TO_CHAR( exp(sum(ln(a.字段B))) ) from table a
看看,
把查询结果, 存储到 字符型的数据上面, 看看还会溢出么?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询