/** * Register a positional parameter. All positional parameters must be * registered. * * @param position parameter position * @param type type of the parameter * @param mode parameter mode * @return the same query instance */ public StoredProcedureQuery registerStoredProcedureParameter(int position, Class type, ParameterMode mode) { entityManager.verifyOpenWithSetRollbackOnly(); StoredProcedureCall call = (StoredProcedureCall) getDatabaseQuery().getCall(); if (mode.equals(ParameterMode.IN)) { call.addUnamedArgument(String.valueOf(position), type); } else if (mode.equals(ParameterMode.OUT)) { call.addUnamedOutputArgument(String.valueOf(position), type); } else if (mode.equals(ParameterMode.INOUT)) { call.addUnamedInOutputArgument(String.valueOf(position), String.valueOf(position), type); } else if (mode.equals(ParameterMode.REF_CURSOR)) { call.useUnnamedCursorOutputAsResultSet(position); } // Force a re-calculate of the parameters. this.parameters = null; return this; }
if (hasType()) { if (callByIndex) { call.addUnamedArgument(m_queryParameter, getJavaClass(m_type)); } else { if (hasJdbcType() && hasJdbcTypeName()) { call.addUnamedArgument(m_queryParameter, m_jdbcType, m_jdbcTypeName); } else { call.addNamedArgument(m_name, m_queryParameter, m_jdbcType, m_jdbcTypeName); call.addUnamedArgument(m_queryParameter, m_jdbcType); } else { call.addNamedArgument(m_name, m_queryParameter, m_jdbcType); call.addUnamedArgument(m_queryParameter); } else { call.addNamedArgument(m_name, m_queryParameter);