create or replace function f_name return varchar2 is
r_value   varchar2(1000);
begin
for v in (select name from test) loop
r_value:=r_value||v||',';
end loop;
return substr(r_value, 1, length(r_value-1));
end;

解决方案 »

  1.   

    select ltrim(max(sys_connect_by_path(name,',')),',')
    from
    (select test.name,rownum rn)
    start with rn=1
    connect by prior rn=rn-1
      

  2.   

    create or replace function f_name return varchar2 is
    r_value   varchar2(2000);
    begin
    r_value:='';
    for v in (select name from test) loop
    r_value:=r_value||v||',';
    end loop;
    return left(r_value, length(r_value-1));
    end f_name;
    select f_name() from dual;
      

  3.   

    select max(sys_connect_by_path(name,','))
    from
    (select table.name,rownum num)
    start with num=1
    connect by prior num=num-1
      

  4.   

    想问一下,如果反过来呢??
    有:aaa|bbb|ccc|ddd|eee
    如何分割成:
    aaa
    bbb
    ccc
    ddd
    eee
    ?请教大家了!!