Wie spreche ich den Fehlertext einer Exception an?

Hi,

ich möchte die Texte der Exceptions einer stored Procedure in eine Tabelle abspeichern. Beispiel: „Table xy doesn’t exist“, soll, mit Datum versehen, in die Tabelle log eingetragen werden.

declare exit handler for sqlexception
begin
insert into log (Datum, Fehlertext) values ( now(), ??? );
end;

Was muss hier anstatt der Fragezeichen stehen?

Ich bedanke mich herzlichst für jedwede Hinweise. Gruß,
Franz

Hi FraLang,
um was für eine DB geht es denn (Oracle, DB2, SQL Server…)?

In Oracle gibt es dafür die vordefinierten Variablen SQLCODE und SQLERRM und die Möglichkeit, solche Änderungen per AUTONOMOUS TRANSACTION unabhängig von den anderen Transaktionen zu committen.

gruss
bernhard

Hallo Bernhard,

ich verwende MySQL. Entschuldigung, hätte ich angeben sollen.

Exakt das entsprechende für SQLERRM in MySQL suche ich. Kennst du das zufällig oder wie krieg ich das raus?

Vielen Dank, Gruß,
Franz

http://dev.mysql.com/doc/refman/5.1/de/error-handlin…

In Prozeduren :

@@SQLSTATE
@@SQLSTATE\_MESSAGE

und noch
@@MYSQLERROR (die MySql error Nummer)

zu alte Version?
Hi,

danke für die Hinweise. Ich bekomme aber die Meldung: „Unknown system variable“. Mus man noch irgendeine Einstellung machen, oder habe ich eine zu alte MySQL-Version? MySQL-Version 5.1.36, Client-Version 5.1.11, MySQL Query Browser Version 1.2.17 Copyright 2005-2008 MySQL AB, 2009 Microsystems Inc.

Gruß,
Franz

ok, des gibts nicht innerhalb von prozeduren :frowning:

aber es gibt
GET_DIAGNOSTICS
http://dev.mysql.com/doc/refman/5.6/en/get-diagnosti…

viel spass

)

ja, ich bedanke mich. Ich muss jetzt die neuere Version downloaden. Das Get Diagnostics ist genau das, was ich brauche. Es funktioniert erst ab Version 5.6.4

Gruß,
Franz