Я пытаюсь выполнить запрос против z/OS DB2, используя JDBC Type 4 Connection. Запрос упрощается:DB2 V10 zOS JDBC Получение SQLCODE -302
PreparedStatement stmt = conn.prepareStatement("SELECT * FROM EMP WHERE ? = ' ' OR NAME = ?"); stmt.setString(1, "Joe"); stmt.setString(2, "Joe");
Выполнение этого запроса приведет к SQLCODE -302, потому что это Joe
длина три и одна заготовка длиной один.
Если я выполняю запрос до
"SELECT * FROM EMP WHERE ? = ' ' OR NAME = ?", он работает без ошибок, но это не то, что я ищу.
Возможно ли, что свойство JDBC делает выражение
?=' '
универсальным для любой длины параметра?
Спасибо за ваш ответ. Это в основном работает, но я по-прежнему не свободен от изменения типа данных столбца, например, от «CHAR (10)» до «CHAR (20)», не меняя при этом все программы с использованием столбца. – user2740037
Во-первых, если вы вынуждены изменять типы данных столбцов в существующей базе данных, что-то не так с вашим дизайнерским подходом. Во-вторых, ничто не мешает вам использовать маркер параметра для типа данных, который охватывает ваши будущие упражнения DDL, например. УАКСНАК (32672). – mustaccio