Spring调用ORACLE存储过程的结果集(三)

日期: 2008-06-17 来源:TechTarget中国

  public void setOutParameter(String column,int type){
  declareParameter(new SqlOutParameter(column, type,callback));
  //利用回调句柄注册输出参数
  }
  public void setParameter(String column,int type){
  declareParameter(new SqlParameter(column, type));
  }


  public void SetInParam(Map inParam){
  this.inParam = inParam;
  }


  public Map &#101xecute() {
  compile();
  return &#101xecute(this.inParam);
  }
  }


  下面我们看一下调用过程:


  DriverManagerDataSource ds = …….;


  SpringStoredProcedure sp = new SpringStoredProcedure(ds,”PK_AREA_PUBLIC.area_search”);


  //注册参数类型,输入参数和输出参数同时注册,否则不能正确编译存储过程
  sp.setParameter(“vTarget_in”,java.sql.Types.VARchar);
  sp.setOutParameter(“cur_result_out”,oracle.jdbc.OracleTypes.CURSOR);
  sp.compile();


  //传入输入参数值
  Map in = new HashMap();
  in.put(“vTarget_in”,”一个内容”);
  sp.SetInParam(in);


  //执行存储过程
  sp.&#101xecute();


  Map m = sp.set.get(0);//ReultSet的第一条记录
  //set定义为SpringStoredProcedure的属性用于接收回调时的数据
  //如果有多个输出参数,应该在每个输出参数的回调方法中生成该输出
  //参数对应的ArrayList,然后加到一个成员变量的数据结构中.
  Iterator i = m.keySet().iterator();
  while(i.hasNext()){
  String key = i.next().toString();
  System.out.println(key + “=>” + m.get(key));
  }


  总之,上面的方法虽然解决了Spring中对Oracle存储过程的调用,但我极力不推荐这程复杂的处理。

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

相关推荐