У меня есть устаревшая база данных на Db2 i (Db2400), в которой имена таблиц (физических файлов) и их поля содержат несколько вариантов символов, таких как @ и #.Мое приложение использует простой JDBC для доступа к данным в этих таблицах.
Это прекрасно работает, когда на моей машине IBM i установлен CCSID по умолчанию, т.е. на 65535, и на английском CCSID.
Но запросы SQL на CCSID не выполняются, например, 871 (Исландия), который обрабатывает символ @ по-разному.Это выдает ошибку:
[SQL0113] Name T@BNAME not allowed.
Я пробовал несколько подходов для решения проблемы, например, установил свойство URL-адреса соединения JDBC:
"package ccsid" в 1208 (UTF-8).
"package ccsid" - указывает кодировку символов, используемую для пакета SQL и любых операторов, отправляемых в систему.
Другой подход заключался в создании псевдонимов для таких таблиц.Но если эти символы присутствуют в имени столбца, то мы не можем создать псевдоним для тех, кто не воссоздает структуру таблицы.
Я ожидаю, что мои запросы JDBC будут правильно выполняться в разных CCSID.Рекомендуется не использовать такие символы в имени объекта SQL.Но, как я уже сказал, моя база данных является устаревшей базой данных и не может быть легко изменена / изменена.