This pl / sql code should work in oracle 11g. It flushes the text of the clobs in the directory with the name as the file name.
begin for rec in (select title, text from mytable) loop DBMS_XSLPROCESSOR.clob2file(rec.text, 'DUMP_SOURCES', rec.title ||'.txt'); end loop; end;
If DBMS_XSLPROCESSOR is not available, you can replace DBMS_XSLPROCESSOR.clob2file with a procedure using UTL_FILE. For instance:
CREATE OR REPLACE PROCEDURE CLOB2FILE ( clob_in IN CLOB, directory_name IN VARCHAR2, file_name IN VARCHAR2 ) IS file_handle UTL_FILE.FILE_TYPE; clob_part VARCHAR2(1024); clob_length NUMBER; offset NUMBER := 1; BEGIN clob_length := LENGTH(clob_in); file_handle := UTL_FILE.FOPEN(directory_name, file_name, 'W'); LOOP EXIT WHEN offset >= clob_length; clob_part := DBMS_LOB.SUBSTR (clob_in, 1024, offset); UTL_FILE.PUT(file_handle, clob_part); offset := offset + 1024; END LOOP; UTL_FILE.FFLUSH(file_handle); UTL_FILE.FCLOSE(file_handle); EXCEPTION WHEN OTHERS THEN UTL_FILE.FCLOSE(file_handle); RAISE; END;
Or perhaps replace the DBMS_XSLPROCESSOR.clob2 file with the dbms_advisor.create_file file.
source share