Oracle - ORA-06502: PL / SQL: numerischer oder Wertfehler (DBMS_OUTPUT)

Ich habe eine Funktion implementiert, die @ zurückgi clob Datentyp, und ich möchte das Ergebnis in @ druckDBMS-Ausgabe. Leider bekomme ich ORA-06502: PL / SQL: numerischer oder Wertfehler und ich denke, es liegt an der Größe von DBMS_OUTPUT.

Dies ist der Code.

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;

Hier gibt es etwas, das Ihnen helfen kann, dieses Problem zu verstehen
1) Folgendes hinzugefügt, um die Größe des Puffers @ festzulegunbegrenz, hat aber nicht funktioniert ..

DBMS_OUTPUT.ENABLE(NULL);

ode

set serveroutput on size unlimited;

Verwandter Link:http: //www.oracle-developer.net/display.php? id = 327

2) Es wird angemerkt, dass die Größe von vr_output_str @ is 75387, und deshalb ist der Rückgabetyp CLOB.

DBMS_LOB.getlength(vr_output_str); // =75387

3) Ich kann das Problem folgendermaßen lösen, aber ich denke, das ist keingute Lösun da die Funktion dreimal ausgeführt wurde.

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) Ich benutzeOracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64-Bit-Produktion

Antworten auf die Frage(2)

Ihre Antwort auf die Frage