Example usage for org.springframework.jdbc.core SqlReturnResultSet SqlReturnResultSet

List of usage examples for org.springframework.jdbc.core SqlReturnResultSet SqlReturnResultSet

Introduction

In this page you can find the example usage for org.springframework.jdbc.core SqlReturnResultSet SqlReturnResultSet.

Prototype

public SqlReturnResultSet(String name, RowMapper<?> mapper) 

Source Link

Document

Create a new instance of the SqlReturnResultSet class.

Usage

From source file:org.marccarre.spring.db.testing.FooStoredProcedure.java

public FooStoredProcedure(DataSource dataSource) {
    super(dataSource, "GetFoosById");
    declareParameter(new SqlParameter(FOO_ID, Types.INTEGER));
    declareParameter(new SqlReturnResultSet(RESULTS, new FooRowMapper()));
    compile();//ww w.ja  v  a2s . co  m
}

From source file:com.swiftcorp.portal.report.dao.MPRStoredProcedure.java

public MPRStoredProcedure(DataSource ds) {
    super(ds, STORED_PROC_NAME);

    //Return Resultset parameters
    declareParameter(new SqlReturnResultSet("rs", new RowCallbackHandlerImpl()));

    //input parameters
    declareParameter(new SqlParameter("FROM_DATE", Types.DATE));
    declareParameter(new SqlParameter("TO_DATE", Types.DATE));
    System.out.println(" MPRStoredProcedure ");

    try {/*from   w  ww.  j av  a2 s  . co m*/
        compile();
    } catch (Throwable t) {
        t.printStackTrace();
    }

    System.out.println(" MPRStoredProcedure compile ");
}

From source file:org.metis.jdbc.WdsStoredProcedure.java

public WdsStoredProcedure(SqlStmnt stmt) throws Exception {

    super(stmt.getJdbcTemplate(), stmt.getStoredProcName());

    setFunction(stmt.isFunction());//  w ww. jav  a  2s. c o m
    myStmt = stmt;

    // Parameters should be declared in the same order that
    // they are declared in the stored procedure. The one exception
    // are result sets, which must be defined first!!
    //
    // Here's something I found as to why - When you make any private
    // static class of StoreProcedure, then in its constructor you must
    // declare SqlReturnResultSet before you declare SqlParameter.
    // Otherwise you will not be able to find return data from
    // StoredProcedure execution. Still not sure what this means
    // and why its so.
    //
    for (SqlToken sqlToken : myStmt.getSortedKeyTokens()) {
        if (sqlToken.isRset()) {
            declareParameter(new SqlReturnResultSet(sqlToken.getKey(), myStmt));
        }
    }

    // now do the other parameters
    // iterate through tokens in proper sequence; parameters must be
    // declared according to the sequence in which they appear in the
    // statement
    for (SqlToken sqlToken : myStmt.getSortedKeyTokens()) {

        // skip result sets
        if (sqlToken.isRset()) {
            continue;
        }

        switch (sqlToken.getMode()) {
        case IN:
            declareParameter(new SqlParameter(sqlToken.getKey(), sqlToken.getJdbcType().getType()));
            break;
        case OUT:
            // look for CURSOR types
            if (sqlToken.isCursor()) {
                // if it is a cursor then check to see if it is Oracle or
                // some other DBMS and set the type accrodingly
                int type = (myStmt.getMetisController().isOracle()) ? ORACLE_CURSOR : Types.OTHER;
                declareParameter(new SqlOutParameter(sqlToken.getKey(), type, myStmt));
            } else {
                declareParameter(new SqlOutParameter(sqlToken.getKey(), sqlToken.getJdbcType().getType()));
            }
            break;
        case INOUT:
            // note: you can't have cursors as IN params - doesn't
            // make sense, so don't check for them when its an INOUT
            declareParameter(new SqlInOutParameter(sqlToken.getKey(), sqlToken.getJdbcType().getType()));
            break;
        default:
            throw new Exception("WdsStoredProcedure: this invalid mode was provided: " + sqlToken.getMode());
        }
    }

    // specify whether this is a function
    super.setFunction(myStmt.isFunction());

    // compile the statement
    compile();
}

From source file:cc.tooyoung.common.db.JdbcTemplate.java

/**
 * Extract output parameters from the completed stored procedure.
 * @param cs JDBC wrapper for the stored procedure
 * @param parameters parameter list for the stored procedure
 * @return Map that contains returned results
 *///from  w  w w .jav  a 2s .  c  o m
@SuppressWarnings("unchecked")
protected Map extractOutputParameters(CallableStatement cs, List parameters) throws SQLException {
    Map returnedResults = new HashMap();
    int sqlColIndex = 1;
    for (int i = 0; i < parameters.size(); i++) {
        SqlParameter param = (SqlParameter) parameters.get(i);
        if (param instanceof SqlOutParameter) {
            SqlOutParameter outParam = (SqlOutParameter) param;
            if (outParam.isReturnTypeSupported()) {
                Object out = outParam.getSqlReturnType().getTypeValue(cs, sqlColIndex, outParam.getSqlType(),
                        outParam.getTypeName());
                returnedResults.put(outParam.getName(), out);
            } else {
                Object out = cs.getObject(sqlColIndex);
                if (out instanceof ResultSet) {
                    if (outParam.isResultSetSupported()) {
                        returnedResults.putAll(processResultSet((ResultSet) out, outParam));
                    } else {
                        String rsName = outParam.getName();
                        SqlReturnResultSet rsParam = new SqlReturnResultSet(rsName, new ColumnMapRowMapper());
                        returnedResults.putAll(processResultSet(cs.getResultSet(), rsParam));
                        ApiLogger.info("Added default SqlReturnResultSet parameter named " + rsName);
                    }
                } else {
                    returnedResults.put(outParam.getName(), out);
                }
            }
        }
        if (!(param.isResultsParameter())) {
            sqlColIndex++;
        }
    }
    return returnedResults;
}

From source file:org.springframework.jdbc.core.JdbcTemplateTests.java

public void testExecuteClosed() throws Exception {
    MockControl ctrlResultSet;//from   ww w.j a va2  s  .c om
    ResultSet mockResultSet;
    MockControl ctrlCallable;
    CallableStatement mockCallable;

    ctrlResultSet = MockControl.createControl(ResultSet.class);
    mockResultSet = (ResultSet) ctrlResultSet.getMock();
    mockResultSet.next();
    ctrlResultSet.setReturnValue(true);
    mockResultSet.close();
    ctrlResultSet.setVoidCallable();

    ctrlCallable = MockControl.createControl(CallableStatement.class);
    mockCallable = (CallableStatement) ctrlCallable.getMock();
    mockCallable.execute();
    ctrlCallable.setReturnValue(true);
    mockCallable.getUpdateCount();
    ctrlCallable.setReturnValue(-1);
    mockCallable.getResultSet();
    ctrlCallable.setReturnValue(mockResultSet);
    mockCallable.close();
    ctrlCallable.setVoidCallable();

    mockConnection.prepareCall("my query");
    ctrlConnection.setReturnValue(mockCallable);

    ctrlResultSet.replay();
    ctrlCallable.replay();
    replay();

    List params = new ArrayList();
    params.add(new SqlReturnResultSet("", new RowCallbackHandler() {
        public void processRow(ResultSet rs) {
            throw new InvalidDataAccessApiUsageException("");
        }

    }));

    JdbcTemplate template = new JdbcTemplate(mockDataSource);
    try {
        template.call(new CallableStatementCreator() {
            public CallableStatement createCallableStatement(Connection conn) throws SQLException {
                return conn.prepareCall("my query");
            }
        }, params);
    } catch (InvalidDataAccessApiUsageException idaauex) {
        // ok
    }

    // verify confirms if test is successful by checking if close() called
    ctrlResultSet.verify();
    ctrlCallable.verify();
}

From source file:org.springframework.jdbc.core.metadata.CallMetaDataContext.java

/**
 * Create a ReturnResultSetParameter/SqlOutParameter depending on the support provided
 * by the JDBC driver used for the database in use.
 * @param parameterName the name of the parameter (also used as the name of the List returned in the output)
 * @param rowMapper a RowMapper implementation used to map the data returned in the result set
 * @return the appropriate SqlParameter//from   w w w. j a  va 2 s .c om
 */
public SqlParameter createReturnResultSetParameter(String parameterName, RowMapper<?> rowMapper) {
    CallMetaDataProvider provider = obtainMetaDataProvider();
    if (provider.isReturnResultSetSupported()) {
        return new SqlReturnResultSet(parameterName, rowMapper);
    } else {
        if (provider.isRefCursorSupported()) {
            return new SqlOutParameter(parameterName, provider.getRefCursorSqlType(), rowMapper);
        } else {
            throw new InvalidDataAccessApiUsageException(
                    "Return of a ResultSet from a stored procedure is not supported.");
        }
    }
}