模拟创建数据:
create table zy_1 (username varchar2(30));
insert into zy_1 (USERNAME)
values ('ZHOUXIN014');
insert into zy_1 (USERNAME)
values ('EDSAFCSOP');
insert into zy_1 (USERNAME)
values ('AGENTJOB');
insert into zy_1 (USERNAME)
values ('SALESLOGTMP');
insert into zy_1 (USERNAME)
values ('EDSLASSOP');
insert into zy_1 (USERNAME)
values ('SALESJOB');
insert into zy_1 (USERNAME)
values ('AFCSSYNOPR');
insert into zy_1 (USERNAME)
values ('FRETSOPR');
insert into zy_1 (USERNAME)
values ('ICSJOB');
sql代码:
-- Created on 2013-1-27 by XL
--CREATE DIRECTORY D_OUTPUT AS 'E:';
declare
-- Local variables here
V_FILE UTL_FILE.FILE_TYPE;
V_BUFFER VARCHAR2(32767);
v_user clob:='';
begin
-- Test statements here
V_FILE := UTL_FILE.FOPEN('D_OUTPUT', 'schema.txt', 'w', 32767);
for cc in (select usert
from (select lev,
r2,
ltrim(sys_connect_by_path(username, ','), ',') as usert,
id3
from (select username,
lev,
r2,
row_number() over(partition by lev order by lev, r2) as id1,
lag(username) over(partition by lev order by lev, r2) as par_user,
max(r2) over(partition by lev) as id3
from (select username,
trunc(r1 / 4) lev,
mod(r1, 4) as r2
from (select username, rownum as r1
from zy_1)))
start with par_user is null
connect by prior username = par_user)
where r2 = id3) loop
v_user:=v_user||cc.usert||',';
end loop;
UTL_FILE.PUT_LINE(V_FILE, v_user);
UTL_FILE.FCLOSE(V_FILE);
end;