in rdb/src/main/java/org/apache/tuscany/das/rdb/impl/Statement.java [59:98]
public List executeCall(ParametersExtendedImpl parameters) throws SQLException {
CallableStatement cs = jdbcConnection.prepareCall(queryString);
Iterator inParams = parameters.getInParameters().iterator();
while (inParams.hasNext()) {
ParameterExtendedImpl param = (ParameterExtendedImpl) inParams.next();
cs.setObject(param.getIndex(), param.getValue());
}
// register out parameters
Iterator outParams = parameters.getOutParameters().iterator();
while (outParams.hasNext()) {
ParameterExtendedImpl param = (ParameterExtendedImpl) outParams.next();
if (this.logger.isDebugEnabled()) {
this.logger.debug("Registering parameter " + param.getName());
}
cs.registerOutParameter(param.getIndex(), SDODataTypeHelper.sqlTypeFor(param.getType()));
}
// Using execute because Derby does not currenlty support
// executeQuery
// for SP
cs.execute();
List results = new ArrayList();
results.add(cs.getResultSet());
while (cs.getMoreResults(java.sql.Statement.KEEP_CURRENT_RESULT)) {
results.add(cs.getResultSet());
}
Iterator i = parameters.getOutParameters().iterator();
while (i.hasNext()) {
ParameterExtendedImpl param = (ParameterExtendedImpl) i.next();
param.setValue(cs.getObject(param.getIndex()));
}
return results;
}