У меня есть таблица DB2, которая определена как таблица Unicode Она содержит поле, определенное как Char (35). Теперь у меня есть параметр, который имеет длину 35, но содержит немецкий умляут, поэтому ему нужно больше 35 байт. Я получаю SQLCODE -302, если пытаюсь выполнить оператор Insert или Update. Если я удалю один символ из переменной параметра, он будет работать, и чтение таблицы также вернет немецкий умляут правильно. Я попробовал его с помощью SQuirreL с драйвером DB2 3.64.82, но не с параметром, а с константой строки, и он возвратил SQLCode -404, который является куском -302 для строковых констант. Вот SQL заявление я попытался выполнить в SQirreL SQL Client 3.4.0:DB2 V10 для Z/OS Таблица Unicode и JDBC получает -302 для параметра, который содержит символы Unicode
INSERT INTO LEA0001.VP_105 (Anlage_Zeitpunkt, Anlage_User, Aender_Zeitpunkt,
Aender_User, V_Nr, lief_id_ref_nr, gueltig_bis_zp, gueltig_ab_zp,
erstprod_termin,druckfreig_termin, ANF_SDB, IST_ERSTPROD_KW, pr_name, pr_strasse,
pr_plz, pr_ort, pr_land) values (current timestamp, 'HUGO', current timestamp, '',
48854, 2769, '9999-12-31 23:59:59.999999', '2014-11-25 15:40:36.395542',
'0001-01-01', '0001-01-01', 'N', 'N', 'Getränkeggggggggggggggggggggggggggg', '', '', '', '')
Что я хотел бы знать, если это ошибка в драйвере DB2 или, если есть параметр или ее для драйвера, который заставит его работать. Мне кажется, что сейчас драйвер сравнивает количество байтов с указанной длиной поля и затем бросает эту ошибку, потому что 36> 35. Но должно быть очевидно, что для таблицы Unicode это не может быть прав.
Информация о версии: В беличьих я использовать драйвер IBM DB2 Net и db2jcc версию драйвера 3.64.82 БД является Z/OS DB2 V10 Rel 1015
О, это объясняет это. Спасибо за Ваш ответ! Итак, мы поправились, переопределив таблицу, поэтому поле теперь Char (70) – Starryk