UTL_FILEが同じ値を2つのファイルに保存するサンプルの下のスクリプトのどこかで0を失うと思います.ファイルtst-i.csvでは先頭のゼロが失われますが、ファイルtst-v.csvでは正しくあります
create table tst (col1 varchar2(50));
insert into tst values('1');
insert into tst values('02');
insert into tst values('3');
DECLARE
fi UTL_FILE.FILE_TYPE;
fv UTL_FILE.FILE_TYPE;
i integer;
v varchar2(50);
begin
fi := utl_file.fopen('MYDIR','tst-i.csv','w');
fv := utl_file.fopen('MYDIR','tst-v.csv','w');
for rc in (select * from tst) loop
i := rc.col1;
v := rc.col1;
utl_file.PUTF(fi, i ||' \n');
utl_file.PUTF(fv, v ||' \n');
end loop;
utl_file.FCLOSE(fi);
utl_file.FCLOSE(fv);
end;
出力はtst-i.csvです
1
2
3
tst-v.csv
1
02
3