Рубрики
Без рубрики

java.sql. Исключение SQLException: операция не разрешена: Порядковая привязка и именованная привязка не могут быть объединены!

– java.sql. Исключение SQLException: операция не разрешена: Порядковая привязка и именованная привязка не могут быть объединены!

Автор оригинала: 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);

Рекомендации

Оригинал: “https://mkyong.com/jdbc/java-sql-sqlexception-operation-not-allowed-ordinal-binding-and-named-binding-cannot-be-combined/”