我正在尝试创建一个简单的存储过程,将查询结果存储到一个字符串中。
v_string1 varchar2(100);
Select column1
From dual;
将会返回
column 1
--------
aaaa
bbbb
cccc
我想把“aaaa,bbbb,cccc”存储到v_string1中。我唯一能想到的是使用游标...有更好的处理方法吗?
我正在尝试创建一个简单的存储过程,将查询结果存储到一个字符串中。
v_string1 varchar2(100);
Select column1
From dual;
将会返回
column 1
--------
aaaa
bbbb
cccc
我想把“aaaa,bbbb,cccc”存储到v_string1中。我唯一能想到的是使用游标...有更好的处理方法吗?
使用SQL Fiddle:
select LISTAGG(name, ',') WITHIN GROUP (ORDER BY 1) AS names
from temp_table
另一种使用纯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
)