Knowledge Base Nr: 00206 exception.txt - http://www.swe-kaiser.de

Downloads:

oracle pl/sql: exception handling template

  
vorgehensweise beim implementieren:
- variablen in declarationsteil einfügen
- exception-block einfügen
- DUMMYFUNC durch prozedur/funktion/trigger name ersetzen
- vor jeder kritischen stelle (select/update/execute_query/...) ec setzen.

beispielausgabe (in statuszeile oder als messagebox):
"Proc/Func ANZEIGE: Fehler (ec=4) : 1722 - ORA-01722: invalid number"

fehleranalyse:
- in quellcode der funktion gehen
- zeile mit zuweisung ec := x; suchen (x ist errorcode ec aus fehlermeldung)
- die zeilen danach in sqlplus oder toad ausprobieren bis die codezeile die
den fehler bringt gefunden ist.
- analyse der fehlerursache
*/

PROCEDURE DUMMYFUNC IS
v_err_num NUMBER;
v_err_msg VARCHAR2(150) := '';
ec NUMBER := 0;
...

BEGIN
ec := 1;

...

ec := 2;

...

EXCEPTION
WHEN NO_DATA_FOUND THEN
message('Proc/Func DUMMYFUNC: Keine Daten!');
WHEN TOO_MANY_ROWS THEN
message('Proc/Func DUMMYFUNC: Zu viele Daten!');
WHEN OTHERS THEN
v_err_num := SQLCODE;
v_err_msg := SUBSTR(SQLERRM,1,100);
message('Proc/Func DUMMYFUNC: Fehler (ec='||ec||') : '||TO_CHAR(v_err_num)||' - '||v_err_msg);
END;