クエリ結果を 1 つの文字列に格納する単純なストアド プロシージャを作成しようとしています。
v_string1 varchar2(100);
Select column1
From dual;
戻ります
column 1
--------
aaaa
bbbb
cccc
「aaaa、bbbb、cccc」を v_string1 に格納したいのですが、考えられるのはカーソルだけです...これを処理するためのより良い方法はありますか?
クエリ結果を 1 つの文字列に格納する単純なストアド プロシージャを作成しようとしています。
v_string1 varchar2(100);
Select column1
From dual;
戻ります
column 1
--------
aaaa
bbbb
cccc
「aaaa、bbbb、cccc」を v_string1 に格納したいのですが、考えられるのはカーソルだけです...これを処理するためのより良い方法はありますか?
SQLフィドルの使用:
select LISTAGG(name, ',') WITHIN GROUP (ORDER BY 1) AS names
from temp_table
Oracle 11G より前で動作する純粋な SQL を使用する別のオプションですが、文字列はまだ 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
)