5

クエリ結果を 1 つの文字列に格納する単純なストアド プロシージャを作成しようとしています。

v_string1 varchar2(100);

Select column1
From dual;

戻ります

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

「aaaa、bbbb、cccc」を v_string1 に格納したいのですが、考えられるのはカーソルだけです...これを処理するためのより良い方法はありますか?

4

2 に答える 2

21

SQLフィドルの使用:

select LISTAGG(name, ',') WITHIN GROUP (ORDER BY 1) AS names
from temp_table
于 2012-06-08T19:02:43.367 に答える
1

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
)
于 2012-06-08T23:58:55.007 に答える