Es gibt ja ca 40.000 Oracle Fehlermeldungen, die vermutlich keiner auswendig kennt. Aber dafür hat ja man die Datenbank, denn die kennt natürlich alle Ihre Fehlertexte.
Die Fehlerfunktion sqlerrm kann mit einem Parameter (der Fehlernummer) aufgerufen werden. Leider klappt das nur in einem PL/SQL Kontext.
Aber kein Problem mittels der WITH Klausel kann in SQL auch eine PL/SQL Funktion ausgeführt werden (es ist noch nicht mal das Recht CREATE PROCEDURE) notwendig.
Also wenn man z.B- die ersten 1000 Oracle Fehlertexte ausgeben möchte, kann man folgene SQL Query ausführen.
WITH FUNCTION get_err_text(id IN NUMBER) RETURN VARCHAR2 IS
BEGIN
return (sqlerrm(id));
END;
SELECT get_err_text(-1*rownum) FROM dual
CONNECT BY LEVEL<1000;
Alternativ kann auch ein spezieller Bereich (hier von ORA-1000 bis ORA-1100) angezeigt werden:
WITH
FUNCTION get_err_text(id IN NUMBER) RETURN VARCHAR2 IS
BEGIN
return (sqlerrm(id));
END;
err_msg as (SELECT rownum as err_id FROM dual CONNECT BY LEVEL<100000)
SELECT get_err_text(-1*err_id) FROM err_msg
WHERE err_id between 1000 and 1100;
Wer interesse hat,mehr über die Fehlerbehandlung in Oracle zu erfahren, besucht einfach unseren PL/SQL Grundlagen-Kurs