UTL_FILE.WRITE_ERROR when calling utl_file.put in a loop

前端 未结 2 1019
执念已碎
执念已碎 2021-01-20 00:17

I have below code in my PL/SQL procedure, which I called in API_XXX.put(it calls utl_file.put) in a while loop. And the l_xmldoc is CLOB from a function of getR

2条回答
  •  耶瑟儿~
    2021-01-20 00:50

    Just a guess, but instead of "to_char(10)" you might try chr(10) to determine/write a newline. Not sure if this will solve your problem, but sometimes very long lines (without newlines) can cause issues.

    For example:

    declare
        l_clob clob;
        l_char char;
    begin
        l_clob := 'Line 1' || chr(10) || 'Line 2' || chr(10);
    
        for i in 1 .. DBMS_LOB.GETLENGTH(l_clob)
        loop
            l_char := dbms_lob.substr(l_clob, 1, i);
    
            if (l_char = chr(10)) then
            --if (l_char = to_char(10)) then
                dbms_output.put_line('Found a newline at position ' || i);
            end if;
        end loop;
    
    end;
    

    Notice the difference between chr(10) and to_char(10). Easy enough to test if this solves your problem anyway.

提交回复
热议问题