F1, F2 dosyaların işlem yapmamız için uçları
V1 satırları içine okuyacağımız değişkenimiz VARCHAR cinsinden ve maks uzunlukta(32767), Bir karakter uzun olursa istisna fırlatacağı için HER TÜRLÜ İSTİSNA (OTHERS) durumunda çık diyoruz (WHEN OTHERS THEN EXIT;)
declare V1 VARCHAR2(32767); F1 UTL_FILE.FILE_TYPE; F2 UTL_FILE.FILE_TYPE; begin -- R : Read (Okumak için açıyoruz) F1 := UTL_FILE.FOPEN('d:\temp','test.txt','R',256); -- W : Write (Yazmak için açıyoruz) F2 := UTL_FILE.FOPEN('d:\temp','test1.txt','W',256); LOOP BEGIN UTL_FILE.GET_LINE(F1, V1, 32767); DBMS_OUTPUT.PUT_LINE(V1); UTL_FILE.PUT_LINE(F2,V1); EXCEPTION WHEN OTHERS THEN EXIT; END; END LOOP; UTL_FILE.FCLOSE(F1); UTL_FILE.FCLOSE(F2); dbms_output.put_line('Tüm dosyalar kapandı'); end;
Refs: http://docs.oracle.com/cd/B19306_01/appdev.102/b14258/d_lob.htm#i998315
CLOB Değişkenin dosyaya yazılması.
DECLARE dirEFaturalar varchar2(100) default 'd:\EFaturalar'; X_GUID VARCHAR2(100) DEFAULT ''; fileEfatura UTL_FILE.FILE_TYPE; len_efaturaBuffer VARCHAR2(32767); len_efaturaAmount BINARY_INTEGER := 32767; len_efaturaCopyPos INTEGER := 1; BEGIN X_GUID := UPPER(REGEXP_REPLACE(SYS_GUID(), '(.{8})(.{4})(.{4})(.{4})(.{12})', '\1-\2-\3-\4-\5')); fileEfatura := UTL_FILE.FOPEN('d:\EFaturalar', X_GUID || '.txt', 'W', 32767); LOOP BEGIN DBMS_LOB.read (x_clob, len_efaturaAmount, len_efaturaCopyPos, len_efaturaBuffer); UTL_FILE.put(fileEfatura, len_efaturaBuffer); len_efaturaCopyPos := len_efaturaCopyPos + len_efaturaAmount; EXCEPTION WHEN OTHERS THEN EXIT; END; END LOOP; UTL_FILE.FCLOSE(fileEfatura); END;