我正在开发一个从Oracle数据库中获取数据的C#程序。我安装了ODAC(刚更新到版本12.2c),连接到12.1 Oracle数据库并在我的项目中引用Oracle.DataAccess
在我的一个查询中,我想使用众所周知的“hack”exp(sum(ln(col)))来乘以一些值。但是,当我通过ODAC连接数据库时,似乎不支持ln-function。我收到一条错误消息“无效角色”。相同的查询在Oracle SQL Developer中完美运行。
简单的事情:
select ln(value) from table where id=1
会失败,而
select sum(value) from table where id=1
工作得很好。 ODAC中不支持ln函数吗?我需要添加其他参考吗?如果没有,我怎样才能让它在.NET程序中运行? IDE是VS2015。
答案 0 :(得分:0)
原来只是一个相当误导的错误信息。根本问题是从高精度Oracle数字转换为.NET小数。所以使用TRUNC(exp(sum(ln(col))),12)解决了问题。