Oracle PL/SQL将结果合并为一个字符串

5

我正在尝试创建一个简单的存储过程,将查询结果存储到一个字符串中。

v_string1 varchar2(100);

Select column1
From dual;

将会返回

column 1
--------
aaaa
bbbb
cccc

我想把“aaaa,bbbb,cccc”存储到v_string1中。我唯一能想到的是使用游标...有更好的处理方法吗?


可能是Oracle中的listagg替代方案?的重复问题。 - DCookie
2个回答

22

使用SQL Fiddle

select LISTAGG(name, ',') WITHIN GROUP (ORDER BY 1) AS names
from temp_table

酷!我从没见过那个函数,加一! - Gerrat
谢谢。我之前也不知道,直到我Google了一下。很高兴它对你有帮助,同时让我学到了新东西 :D - Kyra

1

另一种使用纯SQL的选项,适用于Oracle 11G之前的版本,尽管字符串仍然限制在4000个字符以内。

Select ltrim(max(names), ', ') as names
From (
  Select sys_connect_by_path(name, ' ,') as names
  From (
    Select name, row_number() over (order by name) as rown
    From temp_table
  )
  Start with rown = 1
  Connect by rown = prior rown + 1
)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接