Содержание
Порядковое связывание или индексное связывание:
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 CallableStatement
CallableStatement
Пример вызова процедуры хранения IN и OUT:
// IN с порядковым связыванием
callableStatement.setInt(1, 999);
// OUT с привязкой имени
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 — Пример параметра хранимой процедуры IN
- JDBC CallableStatement — Пример параметра OUT хранимой процедуры
Callablestatement JDBC процедура магазина
0.00 (0%) 0 votes