2013-06-13 5 views
1

Я использую библиотеку ODAC версии 8.6.12 для подключения к oracle с Delphi 6, у меня есть столбец nvarchar(32), так как вы можете видеть, что он имеет максимум 32 символа и позволяет говорить, что я всегда использую 32 символьных значения, например «123456789-123456789-123456789-12»ODAC: значение столбца nvarchar усечено

Проблема возникает на ПК клиентов, что результат будет усечен до 16 символов, поэтому следующий код покажет мне сообщение с 16 символами «123456789-123456»:

var MyID: string; 
begin 
    MyID:= OraQuery.Field[0].AsString;//value must be "123456789-123456789-123456789-12" 
    // -->> MyID = "123456789-123456" only 16 characters 

Почему у меня проблема? Это зависит от версии Oracle?

Это странно, потому что код, используемый для работы с старым ODAC, только на новом ODAC 8.6.12 на некоторых компьютерах, он не работает - на моем компьютере он работает отлично!

+0

Является ли исходная строка действительно просто «123456789-123456789-123456789-12' или это ваш пример? – Peter

+0

Нет, это только мой пример, но значения в таблице больше, чем 16 символов: Это реальный пример 40E43B6B81B8D6BD-58B6AF44 –

+0

Посмотрите на параметры оракула, которые содержатся в реестре. nVarchar, вероятно, является двубайтовым типом. Следовательно, если есть конкретный символ, который не может быть представлен в одном байте, строка может быть преобразована в двухбайтовый либо Odac, либо клиент Oracle. –

ответ

0

Мы уже исправили проблему, исправление будет включено в следующую версию ODAC, которая будет выпущена в начале следующего месяца.