public List executeCall()

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;

    }