您好,欢迎访问一九零五行业门户网

Oracle 10g与11g中的一个函数wmsys.wm_concat 的不同返回值

wmsys.wm_concat的作用是将多行合并为一行,如一个人买了3只股票a,b,c 正常我们会记录成三条数据,现在要以一条数据显示该人的股票,这是wmsys.wm_concat方法就有用了。 但是,在oracle 10g中该方法返回值可直接转为string后使用,但是在11g中却是clob类型,我们必
wmsys.wm_concat的作用是将多行合并为一行,如一个人买了3只股票a,b,c 正常我们会记录成三条数据,现在要以一条数据显示该人的股票,这是wmsys.wm_concat方法就有用了。
但是,在oracle 10g中该方法返回值可直接转为string后使用,但是在11g中却是clob类型,我们必须将clob转为string 或其他类型后才可以使用。
/**
-
* 将clob转成string ,静态方法
     * @param clob 字段
     * @return 内容字串,如果出现错误,返回null
     */
    public final static string clob2string(clob clob){
      if (clob == null){
        return null;
      }
      stringbuffer sb = new stringbuffer(65535);//64k
      reader clobstream = null;//创建一个输入流对象
      try{
        clobstream = clob.getcharacterstream();
        char[] b = new char[60000];//每次获取60k
        int i = 0;
        while((i = clobstream.read(b)) != -1){
          sb.append(b,0,i);
        }
      }
      catch(exception ex){
        sb = null;
      }
      finally{
        try{
          if (clobstream != null)
            clobstream.close();
        }
        catch (exception e) {
        }
      }
      if (sb == null)
        return null;
      else
        return sb.tostring();
    }
其它类似信息

推荐信息