У меня проблема с Delphi 6 + Oracle 10gR2 + ADO + ClientDataSet.
Всякий раз, когда я запускаю агрегатную функцию в поле NUMBER (19,9), результирующий столбец возвращает тип данных NUMBER в Delphi, а на некоторых машинах он загружается как TBCDField с точностью до 38, и все идет хорошо, но на некоторых машинах он загружается как TBCDField с точностью до 255, и я получаю переполнение BCD на поле.
Чтобы воспроизвести проблему, просто создайте таблицу со столбцом NUMBER (19,9) и выполните команду SELECT SUM ( column_name ) column_name FROM table_name GROUP BY имя_ столбца .
Несмотря на то, что столбец является NUMBER (19,9), результирующий столбец будет NUMBER без определенной точности.
В Delphi загрузите запрос в ADOQuery с привязанным к нему DataSetProvider и ClientDataSet, связанным с DataSetProvider. После вызова ClientDataSet.Open на некоторых машинах я получаю сообщение о переполнении BCD в поле NUMBER, но на многих машинах оно работает хорошо.
Почему я получаю эту точность 255 на некоторых машинах, когда midas.dll, ADO, сервер, пользователь, клиент Oracle одинаковы на обеих машинах? Есть идеи?