Oracle - ORA-06502: PL / SQL: ошибка числа или значения (DBMS_OUTPUT)

Я реализовал функцию, которая возвращаетCLOB тип данных, и я хотел бы напечатать результат вВывод СУБД, К сожалению я получаюORA-06502: PL / SQL: ошибка числа или значения и я думаю, что это связано с размером DBMS_OUTPUT.

Это код.

DECLARE

    TYPE tp_col_array IS TABLE OF varchar2(32767); 
    FUNCTION my_fn (        
        p_in_proc_date IN varchar2)
        RETURN clob AS         
         vr_output_str clob;

        BEGIN            

        -- Detailed code hidden due to privacy. Sorry

        RETURN vr_output_str;

        EXCEPTION 
            WHEN LOGIN_DENIED
            THEN 
                DBMS_OUTPUT.PUT_LINE('Invalid username/password: logon denied');
        RETURN 'TEST Terminated';

    END my_fn;

BEGIN
    DBMS_OUTPUT.PUT_LINE(my_fn('31-AUG-14'));    
END;

Вот кое-что, что может помочь вам понять эту проблему
1) Добавлено следующее, чтобы установить размер буферанеограниченный, но не сработало ..

DBMS_OUTPUT.ENABLE(NULL);

или же

set serveroutput on size unlimited;

Ссылка по теме:http://www.oracle-developer.net/display.php?id=327

2) Следует отметить, что размер vr_output_str равен75387и именно поэтому возвращаемый типCLOB.

DBMS_LOB.getlength(vr_output_str); // =75387

3) Я могу решить проблему, выполнив следующее, но я думаю, что это нехорошее решение так как он выполнил функцию три раза.

DBMS_OUTPUT.PUT_LINE(SUBSTR(my_fn ('31-AUG-14'), 1, 32767));
DBMS_OUTPUT.PUT_LINE(SUBSTR(my_fn ('31-AUG-14'), 32768, 32767));
DBMS_OUTPUT.PUT_LINE(SUBSTR(my_fn ('31-AUG-14'), 65536, 32767));

4) Я используюOracle Database 11g Enterprise Edition, выпуск 11.2.0.3.0 - 64-разрядная версия

Ответы на вопрос(2)

Ваш ответ на вопрос