Skip to content

Instantly share code, notes, and snippets.

@jesusdomin
Last active March 14, 2024 16:30
Show Gist options
  • Save jesusdomin/9a4edd526e8f57649bac to your computer and use it in GitHub Desktop.
Save jesusdomin/9a4edd526e8f57649bac to your computer and use it in GitHub Desktop.
Load CLOB from file and write CLOB to file sample
rem
rem 15/12/2014 - jdom
rem
rem ------------------------------------------------------------------
rem OBJECTIUS:
rem
rem Ejemplo de como leer un fichero y cargar en clob, y de como
rem escribir un clog a fichero.
rem ------------------------------------------------------------------
rem NOTES:
rem ------------------------------------------------------------------
rem PARAMETRES:
rem ------------------------------------------------------------------
rem MODIFICACIONS:
rem ------------------------------------------------------------------
rem
set serveroutput on size 1000000
declare
v_plantilla clob;
v_cos_eml clob;
v_ind_body number;
-- --------------------------------------------------------------------------
procedure clob_from_file(
p_dir in varchar2,
p_file in varchar2,
p_clob in out clob
) is
v_bfile bfile := null;
v_lang_context number := dbms_lob.default_lang_ctx;
v_dest_offset integer := 1;
v_src_offset integer := 1;
v_warning number;
begin
v_bfile := BFileName(p_dir, p_file);
dbms_lob.open(v_bfile, dbms_lob.lob_readonly);
dbms_lob.loadClobFromFile(
p_clob,
v_bfile,
dbms_lob.lobmaxsize,
v_dest_offset,
v_src_offset,
dbms_lob.default_csid,
v_lang_context,
v_warning
);
dbms_lob.close(v_bfile);
end clob_from_file;
-- --------------------------------------------------------------------------
procedure clob_to_file(
p_dir in varchar2,
p_file in varchar2,
p_clob in clob
) is
v_output utl_file.file_type;
v_amt number default 32000;
v_offset number default 1;
v_length number default nvl(dbms_lob.getlength(p_clob), 0);
begin
v_output := utl_file.fopen(p_dir, p_file, 'w', 32760);
while ( v_offset < v_length )
loop
utl_file.put(v_output, dbms_lob.substr(p_clob, v_amt, v_offset));
utl_file.fflush(v_output);
v_offset := v_offset + v_amt;
end loop;
utl_file.new_line(v_output);
utl_file.fclose(v_output);
end clob_to_file;
-- --------------------------------------------------------------------------
begin
dbms_lob.createTemporary(v_plantilla, true);
clob_from_file('UTIL_BDD', 'file-name.html', v_plantilla);
-- TODO ....
clob_to_file('UTIL_BDD', 'new-file-name.html', v_plantilla);
dbms_lob.freeTemporary(v_plantilla);
end;
/
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment