Skip to Main Content

Java Database Connectivity (JDBC)

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

operation not allowed: Ordinal binding and Named binding cannot be combined!

User_9A4T6Mar 15 2022

Hello. I'm trying to make a procedure call from JAVA 8.
Even though I'm not using binding of different types, I still have this exception.
Can anyone tell me why this happens?
If I pass parameter arguments by ordinal, it works normally.
Apparently JDBC or Oracle forces me to use by ordinal, and doesn't let me use with by
named, even though I'm not mixing the two types.

private static final String NR_USER = "nm_user_p";
private static final String NM_USER_BANCO = "nm_user_banco_p";
private static final String ESTABLISHMENT = "establishment_p";
private static final String EQUIPMENT = "equipment_p";
private static final String RESULT = "result";

private static final String PROCEDURE = "procedure";

public List<Object[]> findByFilter(final DtoIn filter) {
    final StoredProcedureQuery query = entityManager.createStoredProcedureQuery(PROCEDURE)
        .registerStoredProcedureParameter(NR_USER, Integer.class, ParameterMode.IN)
        .registerStoredProcedureParameter(NM_USER_BANCO, String.class, ParameterMode.IN)
        .registerStoredProcedureParameter(ESTABLISHMENT, Integer.class, ParameterMode.IN)
        .registerStoredProcedureParameter(EQUIPMENT, String.class, ParameterMode.IN)
        .registerStoredProcedureParameter(RESULT , Class.class, ParameterMode.REF_CURSOR);

    query.setParameter(NR_USER, filter.getNrUser().intValue())
        .setParameter(NM_USER_BANCO, filter.getBanco())
        .setParameter(ESTABLISHMENT, filter.getEstabelecimentCode())
        .setParameter(EQUIPMENT, filter.getEquipmentCode());

    query.execute();

    return query.getResultList();
}
Comments
Post Details
Added on Mar 15 2022
0 comments
2,219 views