/** * Add a procedure parameter. * @param name * @param type should be one of {@link TypeFacility.RUNTIME_NAMES} * @param parameterType should be one of {@link ProcedureParameter.Type} * @param procedure * @return * @throws MetadataException */ public ProcedureParameter addProcedureParameter(String name, String type, ProcedureParameter.Type parameterType, Procedure procedure) { ProcedureParameter param = new ProcedureParameter(); if (renameAllDuplicates) { name = checkForDuplicate(name, (s)->procedure.getParameterByName(s) != null, "Parameter"); //$NON-NLS-1$ } param.setName(name); setUUID(param); param.setType(parameterType); param.setProcedure(procedure); setDataType(type, param, this.dataTypes, false); if (parameterType == Type.ReturnValue) { procedure.getParameters().add(0, param); for (int i = 0; i < procedure.getParameters().size(); i++) { procedure.getParameters().get(i).setPosition(i+1); //1 based indexing } } else { procedure.getParameters().add(param); param.setPosition(procedure.getParameters().size()); //1 based indexing } return param; }
/** * Create stored procedure. * @param name Name of procedure, must match model name * @param model Metadata object for the model * @param params List of FakeMetadataObject that are the parameters for the procedure * @return Metadata object for stored procedure */ public static Procedure createStoredProcedure(String name, Schema model, List<ProcedureParameter> params) { Procedure proc = new Procedure(); proc.setName(name); proc.setNameInSource(name); if (params != null) { int index = 1; for (ProcedureParameter procedureParameter : params) { procedureParameter.setProcedure(proc); procedureParameter.setPosition(index++); } proc.setParameters(params); } model.addProcedure(proc); return proc; }
setDataType(paramRecord); procedureRecord.getParameters().set(i, paramRecord); paramRecord.setProcedure(procedureRecord);
setDataType(paramRecord); procedureRecord.getParameters().set(i, paramRecord); paramRecord.setProcedure(procedureRecord);