可以在 Select 使用 SYS_CONNECT_BY_PATH,
就可以將多筆資料組合成一筆資料,
而無需使用 Cursor 的方式組合.
範例 1
select SYS_CONNECT_BY_PATH( object_name, ',' )
from (select rownum r
, a.object_name
from (select object_name
from user_objects
where object_type = 'TABLE'
and object_name like 'XXF%'
order by object_name
) a -- 先資料排序
) b -- 再取得排序後的 rownum
start with b.r = 1 -- 跟 treeview 一樣, 指定開始位置
connect by prior b.r+1 = b.r; -- 跟 treeview 一樣, 指定父子階層關係
結果 :
,XXFND_FND_USER
,XXFND_FND_USER,XXFND_HIERARCHY
,XXFND_FND_USER,XXFND_HIERARCHY,XXFND_SSO_MAP_USER
範例 2
select max( ltrim( SYS_CONNECT_BY_PATH( object_name, ',' ), ',' ) )
from (select rownum r
, a.object_name
from (select object_name
from user_objects
where object_type = 'TABLE'
and object_name like 'XXF%'
order by object_name
) a -- 先資料排序
) b -- 再取得排序後的 rownum
start with b.r = 1 -- 跟 treeview 一樣, 指定開始位置
connect by prior b.r+1 = b.r; -- 跟 treeview 一樣, 指定父子階層關係
-- ltrim 是要去除最左邊的多餘的符號
-- max 是要取得最後組合的資料
結果 :
XXFND_FND_USER,XXFND_HIERARCHY,XXFND_SSO_MAP_USER
更進階的應用 : http://www.oracle.com/technology/oramag/code/tips2006/101606.html.
感謝 ECS Julia 小姐的技術指導.