79534989

Date: 2025-03-25 22:29:49
Score: 0.5
Natty:
Report link

I'll use that PL/SQL :)

DECLARE
    v_file UTL_FILE.FILE_TYPE;
    v_text CLOB;
    v_buffer VARCHAR2(32767);
    v_amount PLS_INTEGER := 32767;
    v_pos PLS_INTEGER := 1;
BEGIN
    FOR rec IN (SELECT doc_id, doc_text FROM votre_table) LOOP
        -- create file
        v_file := UTL_FILE.FOPEN('EXPORT_DIR', rec.doc_id || '.xml', 'W');

        v_text := rec.doc_text;
        v_pos := 1;

        -- write
        WHILE v_pos <= DBMS_LOB.GETLENGTH(v_text) LOOP
            v_buffer := DBMS_LOB.SUBSTR(v_text, v_amount, v_pos);
            UTL_FILE.PUT_LINE(v_file, v_buffer);
            v_pos := v_pos + v_amount;
        END LOOP;

        -- close it
        UTL_FILE.FCLOSE(v_file);
    END LOOP;
END;
/

I'll test it...it should work

Reasons:
  • Long answer (-0.5):
  • Has code block (-0.5):
  • Self-answer (0.5):
  • Low reputation (1):
Posted by: Laurent Morissette