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