oracle pl / sql结果成一个字符串

时间:2012-06-08 18:52:49

标签: sql oracle stored-procedures plsql

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

v_string1 varchar2(100);

Select column1
From dual;

将返回

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

我想将“aaaa,bbbb,cccc”存储到v_string1中。 而我能想到的只是一个游标...... 有没有更好的方法来解决这个问题?

2 个答案:

答案 0 :(得分:19)

使用SQL Fiddle

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

答案 1 :(得分: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
)