/** * Copied and modified from RoutineUtil * * @param proc * @param values * @param pds * @param quoted_id * @return */ private String constructCALLSPString( ProcIdentifier proc, List values, ParameterDescriptor[] pds, boolean quoted_id) { StringBuffer buffer = new StringBuffer(20); // Derby doesn't support {?= // buffer.append("?="); int type = proc == null ? ProcIdentifier.TYPE_SP : proc.getType(); SQLDevToolsConfiguration config = SQLToolsFacade.getConfigurationByProfileName(proc.getDatabaseIdentifier().getProfileName()); buffer.append(config.getExecutionService().getCallableStatementPrefix(proc.getType())); String procName = null; if (proc != null) { buffer.append(proc.getCallableString(quoted_id)); procName = proc.getProcName(); } if (pds != null && pds.length > 0) { if (type == ProcIdentifier.TYPE_UDF || type == ProcIdentifier.TYPE_SP) { buffer.append("("); // $NON-NLS-1$ } int j = 0; for (int i = 0; i < pds.length; i++) { String name = pds[i].getName(); if (name.equals(procName)) { continue; } if (j != 0) { buffer.append(",?"); // $NON-NLS-1$ } else { buffer.append("?"); } j++; } if (type == ProcIdentifier.TYPE_UDF || type == ProcIdentifier.TYPE_SP) { buffer.append(")"); // $NON-NLS-1$ } } else { buffer.append("()"); } // buffer.append("}"); return buffer.toString(); }
/** * Copied and modified from LaunchHelper * * @param configuration * @return * @throws CoreException */ private String constructFinalCallSQLString(ILaunchConfiguration configuration) throws CoreException, SQLException, NoSuchProfileException { if (LaunchHelper.isAdHocSQL(configuration)) return LaunchHelper.readLaunchSQLStatement(configuration); ProcIdentifier proc = LaunchHelper.readProcIdentifier(configuration); if (proc == null) return ""; boolean quoted_id = LaunchHelper.readQuotedIDConfig(configuration, proc); switch (proc.getType()) { case ProcIdentifier.TYPE_SP: case ProcIdentifier.TYPE_UDF: return constructCALLSPString( proc, LaunchHelper.readParameterList(configuration), LaunchHelper.getAllParameterDescriptors(proc), quoted_id); case ProcIdentifier.TYPE_EVENT: // not supported default: return ""; } }