2017-10-17 6 views
0

Je travaille sur un programme C# qui extrait des données d'une base de données Oracle. J'ai ODAC installé (juste mis à jour vers la version 12.2c), se connectant à une base de données Oracle 12.1 et référençant Oracle.DataAccess dans mon projetOracle LN-fonction non prise en charge dans ODAC?

Dans une de mes requêtes, je veux utiliser le fameux "hack" exp (sum (ln (col))) pour multiplier certaines valeurs. Cependant, il semble que la fonction In n'est pas supportée lorsque je me connecte à la base de données via ODAC. Je reçois un message d'erreur disant "rôle invalide". La même requête fonctionne parfaitement dans Oracle SQL Developer.

Quelque chose d'aussi simple que:

select ln(value) from table where id=1 

échouera, alors que

select sum(value) from table where id=1 

fonctionne très bien. Est-ce que la fonction ln n'est simplement pas supportée par l'ODAC? Ai-je besoin d'ajouter une autre référence? Si non, comment puis-je le faire fonctionner dans un programme .NET? L'IDE est VS2015.

Répondre

0

Il s'est avéré être juste un message d'erreur plutôt trompeur. Le problème principal était la conversion d'un nombre Oracle de haute précision en un décimal .NET. Donc en utilisant TRUNC (exp (sum (ln (col))), 12) a corrigé le problème.