Oracle行转列函数

Oracle行转列函数

1 需求
在实际开发中,行转列函数可以把列值以逗号分隔起来,并显示成一行。现要求利用一条sql语句获得表emp中所有员工姓名,且要求在前台页面中作为一个字符串出现,在这个字符串中员工之间的姓名用逗号分隔开。

2 程序
create or replace function row2col(sqlString varchar2) return varchar2 as
begin
  declare type cu_type is ref cursor;
      cur_name cu_type;
      tmp_name varchar2(20);
      names varchar2(500);

  begin
    open cur_name for sqlString;
    fetch cur_name into tmp_name;
    while cur_name%found loop
      names := names || tmp_name || ',';
      fetch cur_name into tmp_name;
    end loop;
    return rtrim(names, ',');
  end;
end row2col;
/

3 调用
select row2col('select ename from emp') result from dual;
这里result即为内查询得到临时表的别名,也可以去掉
select row2col('select ename from emp') from dual;

4 执行结果
RESULT
--------------------------------------------------------------------------------
SMITH,ALLEN,WARD,JONES,MARTIN,BLAKE,CLARK,SCOTT,KING,TURNER,ADAMS,JAMES,FORD,MIL
LER

5 注意
参数sqlString必须是一个返回单列的SQL语句,否则,此函数将抛出错误。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29485627/viewspace-1248678/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/29485627/viewspace-1248678/

你可能感兴趣的:(数据库)