偶然看到这个问题,看到答案不对,发表一下给大家分享一下

来源:互联网 发布:东海期货交易软件下载 编辑:程序博客网 时间:2024/06/05 13:52

求一SQL语句,现等 oracle 9i 下

表名: tablename
name
张三
李四
王麻子
.....
想得到的结果  '张三,李四,王麻子'   sql应该怎么写呀? 请指教,列的长度是不确定的
问题补充:
补偿下: 是‘张三 李四 王麻子’的结果   是一行
而不是
张三
李四
王麻子

这个问题主要的是列的长度不确定,所以不能简单的用连接符(||)来解决问题

本人的方法是写函数进行循环处理,方法如下:

CREATE OR REPLACE FUNCTION f_ll RETURN CHAR
 AS
 cursor c_bf is

   select name
   from tablename
   order by N;

 vreturn varchar2(10000);
 vbfid VARCHAR2(100);

 BEGIN
 open c_bf;
   loop
     fetch c_bf into vbfid;
     exit when c_bf%notfound or c_bf%notfound is null;
     vreturn := vreturn||vbfid||',';
   end loop;

   close c_bf;
   vreturn := substr(vreturn,1,length(vreturn) - 1);
   RETURN vreturn;
 exception when others then
   raise;
   RETURN null;

 END f_ll;

 

 

--

Select f_ll() from dual;

原创粉丝点击