我正在实现一个Spring + MSSQL Server 2008应用程序。我使用SimpleJDBCCall API来执行存储过程并检索结果。如何在Spring中使用SimpleJDBCCall在两个结果表中获取存储过程的结果?
对于具有单表结果的存储过程,它工作正常,但我不知道如何将它用于具有多表结果的过程。 这里是从我的数据库查询返回两个结果表的截图。 1
这里是我使用的代码,该代码正常工作单表result`
public class LoadOnDemandSP extends StoredProcedure{
private static final String SPROC_NAME = "sps_IME_EF_GetAllMarketData";
public LoadOnDemandSP(DataSource ds) {
super(ds, SPROC_NAME);
RowMapper mapper = new MyRowMapper();
declareParameter(new SqlReturnResultSet("Return Value", mapper));
declareParameter(new SqlParameter("FromDate", Types.VARCHAR));
declareParameter(new SqlParameter("ToDate",Types.VARCHAR));
compile();
}
public List execute(String FromDate,String ToDate) {
Map inputs = new HashMap();
inputs.put("FromDate",FromDate);
inputs.put("ToDate",ToDate);
Map map = super.execute(inputs);
if (map != null && map.size() > 0) {
return (List) map.get("Return Value");
} else {
return new ArrayList();
}
}
private class MyRowMapper implements RowMapper<LoadOnDemand> {
public LoadOnDemand mapRow(ResultSet rs, int rowNum) throws SQLException {
LoadOnDemand l = new LoadOnDemand();
// f.setDay(rs.getInt("ContractDay"));
l.setInternalQuantity(rs.getInt("DVaznTon"));
l.setExportalQuantitiy(rs.getInt("SVaznTon"));
l.setInternalValue(rs.getDouble("DArzeshMillion"));
l.setExternalValue(rs.getDouble("SArzeshMillion"));
l.setInternalBuyersCount(rs.getInt("DBuyers"));
l.setExternalBuyersCount(rs.getInt("SBuyers"));
l.setInternalSellersCount(rs.getInt("DSellers"));
l.setExternalSellersCount(rs.getInt("SSellers"));
l.setInternalGoodsCount(rs.getInt("DSymbols"));
l.setExternalGoodsCount(rs.getInt("SSymbols"));
l.setTablo(rs.getString("GrouhAsli"));
return l;
}
}
}
///新增////
我的样品SP:
CREATE PROCEDURE [dbo].[sps_Test1]
WITH RECOMPILE
AS
SELECT *
FROM dbo.tbl1
SELECT *
FROM dbo.tbl2
您能否显示您的存储过程? – muthu 2013-04-08 11:56:13
我刚刚在这里添加了样例程序 – 2013-04-08 12:04:38