Ошибки CCSID при запросе хранимой процедуры DB2 для IBM i через dbExpress

Задний план

Я использую RAD Studio XE2 с dbExpress, пытаясь получить набор результатов из хранимой процедуры, находящейся в DB2 для IBM i (AS / 400).

Имеет драйвер dbExpress для AS / 400. Я использую Peter Sawatzki (кажется официальным).

процедура имеет один параметр smallint. Я запрашиваю его с CALL MYPROC(1) в TSQLQuery.

Мои TSQLConnection параметры:

DriverUnit=DbxDynalink
LibraryName=dbexpca400.dll
GetDriverFunc=getSQLDriverCA400
Database=192.168.81.97
User_Name=myusername
Password=mypwd
Role=MYDEFAULTSCHEMA
VendorLib=cwbdb.dll
ErrorResourceFile=
ConnectionString=
HostName=
MaxBlobSize=-1
AS400 TransIsolation=DirtyRead
CommitRetain=True
AutoCommit=True
ServerCharSet=
LocaleCode=0000
RowsetSize=-1
Connection Timeout=-1
Trim Char=False

Ошибка

Когда я активирую TSQLQuery, я получаю

cwbDB_Execute вернул код ошибки 6038.

Код ошибки сервера 2 класса -403

Идентификатор сообщения: PWS0011

Si è verificato un errore durante la conversione dei caratteri. Причина ...: Если тип ошибки 2 подтвержден, преобразование CCSID-клиента 0 на CCSID-сервере 1144. [...] 2 - CCSID-клиент или сервер 0 и не согласованы. [...]

На итальянском языке указано, что CCSID сервера - 1144, а CCSID клиента - 0, что недопустимо.

Что я пробовал

Поэтому я попытался установить его, используя ServerCharSet параметр, вдохновленный файлом readme драйвера, который использует 424,1255 для иврита. У меня итальянская система с набором символов 695 и кодовой страницей 1144. Я пробовал много комбинаций для параметра ServerCharSet, но лучшее, что я получил, это 2 новые ошибки:

  • # P12 #
    # P13 # # P14 # # P15 # # P16 #
  • ServerCharSet=1144,695 дает

    cwbDB_StartServer вернул код ошибки 6052.

    CWBNL0102 - Таблица преобразования C: \ Users \ Public \ Documents \ IBM \ Client Access \ 02b734b0.tbl инвалида или исправления

    CWBNL0101 - Подтверждено ошибочное преобразование из данных на кодовой странице 13488 a 695.

    CWBNL0101 - Подтверждено ошибочное преобразование из данных с кодовой страницы 1144 a 695.

    CWBDB0052 - Подтверждено ошибочное преобразование данных

    CWBDB0052 - Подтверждено ошибочное преобразование данных

    [...]

Установка LocaleCode параметра (не задокументирована) не имеет значения.

Вопрос

Как правильно установить CCSID клиента?


person bluish    schedule 08.05.2013    source источник


Ответы (1)


В документации показан набор символов от и до. Просто установка ServerCharSet на 37 работает для меня: ServerCharSet = 37

person Jerry Anderson    schedule 14.05.2014
comment
Спасибо, Джерри, я не могу попробовать, потому что я больше не работаю с dbExpress, но надеюсь, что кто-нибудь сможет проверить ваше решение и оставить отзыв. - person bluish; 15.05.2014