2017-10-17 57 views
0

我正在从一个Oracle数据库获取数据的C#程序。我已经安装ODAC(只更新到版本12.2C),连接到12.1 Oracle数据库和在我的项目ODAC中不支持Oracle LN功能?

引用Oracle.DataAccess在我的查询之一,我想用著名的“黑客” EXP( sum(ln(col)))乘以一些值。但是,当我通过ODAC与数据库连接时,似乎不支持ln函数。我收到一条错误消息,说“无效的角色”。相同的查询在Oracle SQL Developer中完美工作。

事情就这么简单:

select ln(value) from table where id=1 

会失败,而

select sum(value) from table where id=1 

的作品就好了。 ODAC中只是不支持ln-function?我需要添加另一个参考吗?如果没有,我怎样才能在.NET程序中工作? IDE是VS2015。

回答

0

原来只是一个相当具有误导性的错误信息。根本问题是从高精度Oracle数转换为.NET小数。所以使用TRUNC(exp(sum(ln(col))),12)解决了这个问题。