IDataReader из Oracle переполняется при возврате десятичных значений - PullRequest
1 голос
/ 08 ноября 2010

У меня есть код, который отвечает за преобразование данных из IDataReader в IronPython.Runtime.List из PythonTuples.Этот же код используется для нескольких различных типов соединений с базами данных (включая Access, Oracle и MySql).

Тип данных Oracle OracleDecimal вызывает переполнение при вызове dataReader.GetValues(), когда курсор содержит значение с большой точностью,Эта проблема хорошо документирована, и решения всегда включают использование специальных методов на OracleDataAdapter.У меня только интерфейс IDataReader.

Есть ли способ обойти эту проблему без привязки моего кода специально к ODP.NET?Наверняка должен быть какой-то способ получить эти данные независимо от поставщика?

Ответы [ 2 ]

0 голосов
/ 09 ноября 2010

Единственный метод, независимый от поставщика, который мне известен, - это округлить значения в вашем операторе выбора. Я обнаружил, что округление до 15 знаков после запятой обычно помогает.

0 голосов
/ 09 ноября 2010

Это может быть не совсем то, что вы ищете, но класс System.Data.Common.DbDataReader имеет функцию GetProviderSpecificValues, которая может делать то, что вы хотите

...