程序中一个方法中不能调用两个存储过程?

pengcheng_1024 发布于 2013/08/30 11:12
阅读 327
收藏 0

下面是我的连接数据执行存储过程的方法,这个类中就这一个方法,直接获取数据库连接,查询sql语句,没有加到事务中。

public List<Map> getModelCallableList(final String procendure, final List<? extends Object> parm) throws Exception {
        // TODO Auto-generated method stub
        return getHibernateTemplate().execute(new HibernateCallback() {
            List<Map> all = new ArrayList<Map>();

            @SuppressWarnings("deprecation")
            @Override
            public List<Map> doInHibernate(Session session) throws HibernateException, SQLException {
                Connection con = session.connection();
                CallableStatement call = con.prepareCall(procendure);
                if (null != parm && parm.size() > 0)
                    for (int i = 0; i < parm.size(); i++) {
                        if (parm.get(i) instanceof Integer)
                            call.setInt(i + 1, Integer.valueOf(String.valueOf(parm.get(i))));
                        else if (parm.get(i) instanceof Double)
                            call.setDouble(i + 1, Double.valueOf(String.valueOf(parm.get(i))));
                        else if (parm.get(i) instanceof Float)
                            call.setFloat(i + 1, Float.valueOf(String.valueOf(parm.get(i))));
                        else if (parm.get(i) instanceof Long)
                            call.setLong(i + 1, Long.valueOf(String.valueOf(parm.get(i))));
                        else if (parm.get(i) instanceof String)
                            call.setString(i + 1, String.valueOf(parm.get(i)));
                        else if (parm.get(i) instanceof Date)
                            call.setDate(i + 1, (java.sql.Date) Tool.getDate(String.valueOf(parm.get(i))));
                    }
                ResultSet rs = call.executeQuery();
                ResultSetMetaData rsm = rs.getMetaData(); // 获得列集
                int col = rsm.getColumnCount(); // 获得列的个数
                String[] name = new String[col];
                for (int n = 1; n <= col; n++) {
                    name[n - 1] = rsm.getColumnLabel(n);
                }
                Map o = null;
                while (rs.next()) {
                    o = new HashMap<String, Object>();
                    for (int i = 0; i < col; i++) {
                        o.put(name[i], rs.getObject(i + 1));
                    }
                    all.add(o);
                }
                rs.close();
                call.close();
                session.flush();
                session.close();
                return all;
            }
        });
    }

下面是调用上述方法的方法

    private void mosaDayChuKuJine(HttpServletRequest request, HttpServletResponse response) throws Exception {
    	/** sql 封装 **/
    	String ym = request.getParameter("ym");
    	String branchID = request.getParameter("branchID");
     	String format = request.getParameter("format");
    	SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");// format格式:"yyyy-MM-dd"
    	Date strtodate = Tool.getLastMonth(formatter.parse(ym + "-01"));
    	String ss = formatter.format(strtodate).substring(0, 7);// 上个月
    	List<Object> parm = new ArrayList<Object>();
    	parm.add(0, ss+"-26");
    	parm.add(1, ym+"-25");
    	parm.add(2, branchID);
    	String mosaDayChuKuJine = "{CALL mosaDayChuKuJine(?,?,?)}";
    	
    	/**执行第一个存储过程**/
    	List<Map> list = this.getReportJasperDAO().getModelCallableList(mosaDayChuKuJine, parm); 

            /** 执行第二个存储过程    这两存储过程单独执行都ok, 如果量都去执行,只有第一个执行ok,第二个执行时就报错说有个字段不存在!**/               
            String mosaDayChuKu = "{CALL mosaDayChuKu(?,?,?)}";
    	List<Map> list2 = this.getReportJasperDAO().getModelCallableList(mosaDayChuKuJine, parm);
    	for(int i =0;i<list2.size();i++){
    		list.add(list2.get(i));
    	}
    	
    	Map<String, Object> model = new HashMap<String, Object>();
    	model.put("list", list);
    	model.put("format", format);
    	model.put("reportName", "每日出库金额(总汇表)");
    	model.put("template", "jasper\\mosaDayChuKuJine.jasper");
    	// 自定义参数
    	WabappJasperPrint print = new WabappJasperPrint();
    	print.renderOutputModel(model, request, response);
    }

有人遇到过这样的问题没有???求解啊,感谢指导


加载中
返回顶部
顶部