您好,登錄后才能下訂單哦!
將表中clob字段生成txt 文件,發現只要超過32k寫入就報錯。
使用UTL_FILE.PUT的方式循環將buffer寫入文件,但發現一旦某個字段超過32K,在剛好超過32k便報出以上ora06512文件寫入錯誤
v_out_filename_full := v_filedir_guid || v_out_fileext; v_file_handle := UTL_FILE.FOPEN(v_outdir, v_out_filename, 'w',32767); pos := 1; begin LOOP dbms_lob.read(v_clob_loc, amt, pos, buf); -- process contents of buf UTL_FILE.PUT(v_file_handle, buf); UTL_FILE.FFLUSH(file => v_file_handle); pos := pos + amt; END LOOP; EXCEPTION WHEN NO_DATA_FOUND then UTL_FILE.FCLOSE(v_file_handle); end;
于是嘗試將寫入的方式改成wb 字節模式,并用UTL_FILE.PUT_RAW的模式,就可以了:
v_out_filename_full := v_filedir_guid || v_out_fileext; v_file_handle := UTL_FILE.FOPEN(v_outdir, v_out_filename, 'wb',32767); <<<<<<<<<<<< pos := 1; begin LOOP dbms_lob.read(v_clob_loc, amt, pos, buf); -- process contents of buf UTL_FILE.PUT_RAW(v_file_handle, utl_raw.cast_to_raw(buf));<<<<<<<<<<<<<<< UTL_FILE.FFLUSH(file => v_file_handle); pos := pos + amt; END LOOP; EXCEPTION WHEN NO_DATA_FOUND then UTL_FILE.FCLOSE(v_file_handle); end;
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。