/** * INTERNAL: * Return 1-based index of out cursor parameter, or -1. */ public int getCursorOutIndex() { for (int i = 0; i < getParameters().size(); i++) { Object parameter = getParameters().elementAt(i); if (parameter instanceof OutputParameterForCallableStatement) { if (((OutputParameterForCallableStatement)parameter).isCursor()) { return i + 1; } } } return -1; }
/** * INTERNAL: */ public void appendOutCursor(DatabaseField outField) { getParameters().add(outField); getParameterTypes().add(OUT_CURSOR); }
/** * INTERNAL: */ public void appendInOut(Object inValueOrField, DatabaseField outField) { Object[] inOut = { inValueOrField, outField }; getParameters().add(inOut); getParameterTypes().add(INOUT); }
/** * INTERNAL: */ public void appendIn(Object inObject) { getParameters().add(inObject); getParameterTypes().add(IN); }
/** * INTERNAL: */ public void appendInOut(DatabaseField inoutField) { Object[] inOut = { inoutField, inoutField }; getParameters().add(inOut); getParameterTypes().add(INOUT); }
/** * INTERNAL: */ public void appendOut(DatabaseField outField) { getParameters().add(outField); getParameterTypes().add(OUT); }
/** * INTERNAL * Returns the fields to be used in output row. */ public Vector getOutputRowFields() { Vector fields = new Vector(); for (int i = 0; i < getParameters().size(); i++) { Integer parameterType = (Integer)getParameterTypes().elementAt(i); Object parameter = getParameters().elementAt(i); if (parameterType == OUT) { fields.add(parameter); } else if (parameterType == INOUT) { fields.add(((Object[])parameter)[1]); } } return fields; }
/** * Bind the parameter. Binding is determined by the call and second the platform. */ public void bindParameter(Writer writer, Object parameter) { if (parameter instanceof Vector) { throw QueryException.inCannotBeParameterized(getQuery()); } try { writer.write("?"); } catch (IOException exception) { throw ValidationException.fileError(exception); } getParameters().addElement(parameter); }
/** * INTERNAL: * Prepare the JDBC statement, this may be parameterize or a call statement. * If caching statements this must check for the pre-prepared statement and re-bind to it. */ public Statement prepareStatement(DatabaseAccessor accessor, AbstractRecord translationRow, AbstractSession session) throws SQLException { Statement statement = accessor.prepareStatement(this, session); if (getMaxRows() > 0) { statement.setMaxRows(getMaxRows()); } if (!hasParameters()) { return statement; } for (int index = 0; index < getParameters().size(); index++) { session.getPlatform().setParameterValueInDatabaseCall(this.getParameters(), (PreparedStatement)statement, index, session); } return statement; }
/** * Return the SQL string for logging purposes. */ public String getLogString(Accessor accessor) { if (hasParameters()) { StringWriter writer = new StringWriter(); writer.write(getSQLString()); writer.write(Helper.cr()); if (hasParameters()) { AbstractSession session = null; if (getQuery() != null) { session = getQuery().getSession(); } appendLogParameters(getParameters(), accessor, writer, session); } return writer.toString(); } else { return getSQLString(); } }
for (int index = 0; index < getParameters().size(); index++) { Object parameter = getParameters().elementAt(index); Object parameterType = getParameterTypes().elementAt(index); if (parameterType == MODIFY) {
for (int i = 0; i < getParameters().size(); i++) { Object parameter = getParameters().elementAt(i); Integer parameterType = (Integer)getParameterTypes().elementAt(i); if (parameterType == MODIFY) { getParameters().setElementAt(outParameter, i);