oracle逗号隔开行转列_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/,如需转载,请注明出处,否则将追究法律责任。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值