i have script :
PROCEDURE SPOOLINGREPORT(BILLDATE VARCHAR2)
IS

fileName varchar2(100);
fileNameTest varchar2(100);

fileHandler UTL_FILE.FILE_TYPE;
fileHandlerTest UTL_FILE.FILE_TYPE;

tglProses varchar2(10);

hlr varchar2(20);
account_num varchar2(10);
hlrTmp varchar2(20);
lineInput varchar2(255);

accountnum varchar2(30);
accountname varchar2(50);
account_name varchar2(50);
groupname varchar2(50);

accNum varchar2(20);
AccName varchar2(30);
Divre varchar2(10);
AreaCode varchar2(5);
billmon VARCHAR2(20);
EventTypeId number(10);
ANum varchar2(50);
BNum varchar2(100);
TypeCall varchar2(50);
DestArea varchar2(40);
CallDate varchar2(30);
Duration varchar2(50);
Pulse varchar2(30);
NormalCharge varchar2(40);
Airtime varchar2(10);
TotalCharge varchar2(50);

Attr1 varchar2(50);
Attr2 varchar2(50);
Attr3 varchar2(50);
Attr4 varchar2(50);
Attr5 varchar2(50);
Attr6 varchar2(50);
Attr7 varchar2(50);

begin
select to_char(sysdate,'DDMMYYYY') into tglProses from dual;
for cgroupname in (select group_name accountname
from billgrouptelum)
loop
accountname := cgroupname.accountname;

fileName := replace(accountname,' ','_')||'_'||BILLDATE||'_'||tglProses||'.txt';
fileHandler := UTL_FILE.FOPEN('TEST_FOLDER',fileName,'w') ;
hlrTmp := 'xxx';

for cReport in (select * from rpt_telum_starone
where to_char(BILLMON,'MMYYYY')=BILLDATE
and account_name = accountname
order by account_name)
loop
accNum := cReport.Account_Num;
AccName := cReport.ACCOUNT_NAME;
Divre := cReport.DIVRE;
AreaCode := cReport.AREA_CODE;
billmon := cReport.BILLMON;
EventTypeId := cReport.EVENT_TYPE_ID;
ANum := cReport.A_NUMBER;
BNum := cReport.B_NUMBER;
TypeCall := cReport.TYPE_CALL;
DestArea := cReport.DEST_AREA;
CallDate := cReport.CALL_DATE;
Duration := cReport.DURATION;
Pulse := cReport.PULSE;
NormalCharge := cReport.NORMAL_CHARGE;
Airtime := cReport.AIRTIME;
TotalCharge := cReport.TOTAL_CHARGE;
Attr1 := cReport.ATTR_1;
Attr2 := cReport.ATTR_2;
Attr3 := cReport.ATTR_3;
Attr4 := cReport.ATTR_4;
Attr5 := cReport.ATTR_5;
Attr6 := cReport.ATTR_6;
Attr7 := cReport.ATTR_7;

lineInput := accNum||'|'||AccName||'|'||Divre||'|'||AreaCode||' |'||billmon||'|'||EventTypeId||'|'||
ANum||'|'||BNum||'|'||TypeCall||'|'||DestArea||'|' ||CallDate||'|'||Duration||'|'||Pulse||'|'||
NormalCharge||'|'||Airtime||'|'||TotalCharge||'|'| |Attr1||'|'||Attr2||'|'||Attr3||'|'||
Attr4||'|'||Attr5||'|'||Attr6||'|'||Attr7;
UTL_FILE.PUT_LINE(fileHandler, lineInput);
end loop;
UTL_FILE.FCLOSE(fileHandler);
end loop;
end;

my question, how to split file spooling on sql? before there's one file with size 4MB, how to split??
if you can answer it, you can send to my email address
ste2501@gmail.com or could be via this thread..
information please
thank you