顺序绑定或索引绑定:
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
调用IN和OUT存储过程的CallableStatement
示例:
// 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);