0

テーブル内データ(Oracleデータベース)

Date        Id      Flag
16-DEC-13   163750  1
16-DEC-13   163755  1
16-DEC-13   063801  1

テーブルから上記のデータを読み取り、UTL ファイル関数を使用してフラット ファイルに書き込むたびに、フラット ファイルのフィールドからゼロが失われます。

フラットファイル abc.txt

16-DEC-13|163750|1
16-DEC-13|163755|1
16-DEC-13|63801|1
4

1 に答える 1

1

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 
于 2015-11-02T16:05:28.093 に答える