ORA-06512 – ORA-06512 at %sline %s

1.) Texte aus oerr unter Linux

06512, 00000, „at %sline %s“

// *Cause:   Backtrace message as the stack is unwound by unhandled

//           exceptions.

// *Action: Fix the problem causing the exception or write an exception

//           handler for this condition. Or you may need to contact your

//           application administrator or DBA.

2.) Erklärung

Dieser Fehler tritt mit ORA-06502 auf, wenn in PL/SQL ein Feld mit einem Wert gefüllt werden soll, für den das Feld zu klein ist (Anzahl Stellen) und die Ausnahme (Exception) nicht abgefangen wird.

3.) Lösungsvorschläge

Beispiel:

Falsch:

CREATE OR REPLACE PROCEDURE test1

AS

v_number number(3);

BEGIN

v_number := 1000;

END;

/

SQL> execute test1();

BEGIN test1(); END;

*

ERROR at line 1:

ORA-06502: PL/SQL: numerischer oder Wertefehler: number precision too large

ORA-06512: in „SYS.TEST1“, Zeile 5

ORA-06512: in Zeile 1

Richtig:

SQL> CREATE OR REPLACE PROCEDURE test1

AS

v_number number(3);

BEGIN

v_number := 1000;

EXCEPTION

WHEN OTHERS THEN

v_number := 999;

END;

/

SQL> execute test1();

PL/SQL procedure successfully completed.