jdbc里怎样调用一个写在PLSQL里只带输入参数的存储过程 这个存储过程主要是一个查询的结果集!
大哥们能不能在plsql里给我写个这样的存储过程 因为我在测试的时候它老是说存储过程有问题!

解决方案 »

  1.   

    CallableStatement cs = con
    .prepareCall("{callname(?,?)}");
    cs.setString(1, startDate);
    cs.setString(2, endDate);
    cs.execute();
      

  2.   

    CallableStatement cs = con
    .prepareCall("{callname(?,?)}");
    cs.setString(1, startDate);
    cs.setString(2, endDate);
    cs.execute();这位大哥 我是这样搞滴 但是就是调不起来 我把代码给贴出来 主要是我不知道怎样写那个查询的存储过程
    /**
         * 执行存储过程,不支持有返回参数的存储过程。<br>
         * 
         * @param dataSourceCode
         *            数据源<br >
         * @param procName
         *            存储过程名称<br >
         * @param params
         *            参数列表<br >
         * @return 用List包装的查询结果<br >
         * @throws Exception
         */
        public List queryProc(String dataSourceCode, String procName, String[] params) throws Exception {
            Connection conn = connManager.getConnection(dataSourceCode);
            StringBuffer sb = new StringBuffer();
            for (int i = 0; i < params.length; i++) {
                sb.append(params[i]);
                sb.append(" ,");
            }
            String strSql="";
            CallableStatement cste=null;
            if(params.length!=0){
            strSql = sb.toString().substring(0, sb.toString().length() - 1);
            strSql="{call "+procName+"( " + strSql +  ")}";
             cste = conn.prepareCall(strSql);
            }else
            {
              cste = conn.prepareCall("{call "+procName+"}"); 
            }
           
            for (int i = 0; i < params.length; i++) {
                cste.setString(i+1, params[i]);
            }
            List resultList = this.resultSetToList(cste.executeQuery());     //this.resultSetToList是个内不方法
            cste.close();
            RdbConnectionManager.closeConnection(conn);
            return resultList;
        }
      测试的方法: public void testExecuteProc(){
    //        String procName="proc_proj";
    //        String[] params={"478","wwwww"};
    //        try {
    //           List list= sqlEngine.queryProc("1", procName, params);
    //           assertNotNull(list);
    //        }
    //        catch (Exception e) {
    //            e.printStackTrace();
    //            fail(e.getMessage());
    //        }
    //        
    //    }报错 oracle里抛数据库异常