     l_fh utl_file.file_type;
     l_tmp_lob clob;
   begin
-    l_fh := utl_file.fopen(location     => p_path,
-                           filename     => p_filename,
-                           open_mode    => 'r',
-                           max_linesize => 32767);
-
-    dbms_lob.createtemporary(lob_loc => l_tmp_lob,
-                             cache   => false,
-                             dur     => dbms_lob.session);
+    l_fh := utl_file.fopen(
+      location => p_path,
+      filename => p_filename,
+      open_mode => 'r',
+      max_linesize => 32767);
+
+    dbms_lob.createtemporary(
+      lob_loc => l_tmp_lob,
+      cache => false,
+      dur => dbms_lob.session);
 
     declare
-      l_lt constant varchar2(1) := chr(10); -- unix line terminator
+      c_lt constant varchar2(1) := chr(10); -- unix line terminator
       l_buf varchar2(32767);
     begin
       loop
         utl_file.get_line(l_fh, l_buf);
         dbms_lob.writeappend(l_tmp_lob, length(l_buf), l_buf);
         -- get_line ignores line terminator so it is explicitly included
-        dbms_lob.writeappend(l_tmp_lob, length(l_lt), l_lt);
+        dbms_lob.writeappend(l_tmp_lob, length(c_lt), c_lt);
       end loop;
     exception
       when no_data_found then

    utl_file.fclose(l_fh);

    return l_tmp_lob;
  end;

end oos_util_lob;
/

      l_buffer raw(32767);
      l_amount pls_integer := 32767;
    begin
      l_fh := utl_file.fopen(
        location => p_path,
        filename => p_filename,
        open_mode =>'wb',
        max_linesize => 32767);

      l_lob_len := dbms_lob.getlength(l_tmp_lob);

      while l_pos < l_lob_len loop
        dbms_lob.read(
          lob_loc => l_tmp_lob,
          amount => l_amount,
          offset => l_pos,
          buffer => l_buffer);

        utl_file.put_raw(
          file => l_fh,
          buffer => l_buffer,
          autoflush => false);

        l_pos := l_pos + l_amount;
      end loop;
