Автор оригинала: mkyong.
Порядковая привязка или привязка индекса:
String name = stat.getString(2); BigDecimal salary = stat.getBigDecimal(3); Timestamp createdDate = stat.getTimestamp(4);
Именованная привязка:
String name = stat.getString("NAME"); BigDecimal salary = stat.getBigDecimal("SALARY"); Timestamp createdDate = stat.getTimestamp("CREATED_DATE");
Если бы мы смешали и то, и другое вот так:
String name = stat.getString(2); BigDecimal salary = stat.getBigDecimal("SALARY"); Timestamp createdDate = stat.getTimestamp(4);
Ошибка:
java.sql.SQLException: operation not allowed: Ordinal binding and Named binding cannot be combined!
Вызываемое утверждение JDBC
A Вызываемое утверждение
пример вызова процедуры входа и выхода из хранилища:
// IN with ordinal binding callableStatement.setInt(1, 999); // OUT with name binding String name = callableStatement.getString("NAME"); BigDecimal salary = callableStatement.getBigDecimal("SALARY"); Timestamp createdDate = callableStatement.getTimestamp("CREATED_DATE");
Выход
java.sql.SQLException: operation not allowed: Ordinal binding and Named binding cannot be combined!
Чтобы исправить это, обновите все до порядковой привязки или привязки имени:
callableStatement.setInt(1, 999); String name = callableStatement.getString(2); BigDecimal salary = callableStatement.getBigDecimal(3); Timestamp createdDate = callableStatement.getTimestamp(4);
Рекомендации
- Использование Хранимых Процедур
- JDBC CallableStatement – Хранимая процедура В примере параметра
- JDBC CallableStatement – Пример параметра OUT хранимой процедуры
Оригинал: “https://mkyong.com/jdbc/java-sql-sqlexception-operation-not-allowed-ordinal-binding-and-named-binding-cannot-be-combined/”