ORACLE GOURP BY 一个字段后,另一个字段值以逗号瓜分合并

ORACLE GOURP BY 一个字段后,另一个字段值以逗号分割合并

参考:http://www.jb51.net/article/20948.htm

 

 

 

/**
* 功能: ORACLE GOURP BY 一个字段后,另一个字段值以逗号分割合并
* key_name : group by 字段名
* coname : 需要用逗号分割的字段名
* tname : 表名
* 示例:
* select 
  str_list('DEPT_ID', dr.dept_id, 'ROLE_ID','qx.LEAP_DEPT_ROLE')
  from qx.LEAP_DEPT_ROLE dr
  group by dr.dept_id
*/
create or replace function str_list(key_name in varchar2,
                                     key      in varchar2,
                                     coname   in varchar2,
                                     tname    in varchar2) return varchar2 as
  type rc is ref cursor;
  str varchar2(4000);
  sep varchar2(2);
  val varchar2(4000);
  cur rc;
begin
  open cur for 'select ' || coname || ' 
from ' || tname || ' 
where ' || key_name || ' = :x '
    using key;
  loop
    fetch cur
    into val;
    exit when cur%notfound;
    str := str || sep || val;
    sep := ', ';
  end loop;
  close cur;
  return str;
end;
 
1 楼 ppyymm000 2012-11-25  
莫非你不知道有个叫wm_concat的函数?