Я использую библиотеку 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 на некоторых компьютерах, он не работает - на моем компьютере он работает отлично!
Является ли исходная строка действительно просто «123456789-123456789-123456789-12' или это ваш пример? – Peter
Нет, это только мой пример, но значения в таблице больше, чем 16 символов: Это реальный пример 40E43B6B81B8D6BD-58B6AF44 –
Посмотрите на параметры оракула, которые содержатся в реестре. nVarchar, вероятно, является двубайтовым типом. Следовательно, если есть конкретный символ, который не может быть представлен в одном байте, строка может быть преобразована в двухбайтовый либо Odac, либо клиент Oracle. –