现在假设有下面的检索结果输出:
------------------------------
  列名:     姓名
------------------------------
第一行:     张三
第二行:     李四
第三行:     王五
...        ...
------------------------------
由于业务上面的需要,要求将这三行结果将“姓名”字段合并到一行显示,显示出来的结果应如下面:
张三,李四,王五,...以往的做法我都是在返回到业务逻辑层的数据集中进行处理,但是我想有没有办法直接在SQL脚本中实现这个功能,希望大家能
告诉我好的解决方案,谢谢

解决方案 »

  1.   

    可以很负责任的说,可以.
    我参照别人的写的,你可以修改下再用create or replace function LinkAll(sCol varchar2, sTable varchar2,sWhere varchar2,sType varchar2) 
    return varchar2
    is 
        str varchar2(500); 
    --  sCol varchar2(100);  --连接的字段
    --  sTable varchar2(50); --查询的表
    --  sWhere varchar2(200);--查询的条件
    --  sType  varchar2(10); --连接时的分割符
        
        sReturn varchar2(50);
        UnionReturn varchar2(2000);
        type cursor_type is ref cursor;
        c1 cursor_type;
    begin 
        str:='select '||sCol||' from '||sTable||' where 1=1 '||sWhere;
        open c1 for str;
        loop 
        fetch c1 into sReturn;
        exit when c1%notfound;
        UnionReturn:=UnionReturn||sType||sReturn;
        end loop;  
        UnionReturn:=ltrim(UnionReturn,sType);
        return  UnionReturn;
    end ;