Datenbanken
Posts 1-4 of 4
-
Matthias TetzelThe company name is only visible to registered members.SQL Meldungen als Log in eine Tabelle schreiben
Hallo Community,
ich habe mehrere Statements in einem Skript zusammengefasst (insert's, update's ). Führe ich diese auf der Console aus erhält man im Anschluss jedes Staments bekanntermaßen die Meldung "x rows inserted" oder "x rows updated" oder auch eine entsprechende ORA Fehlermeldung wenn etwas schiefgeht. Kennt jemand eine Möglichkeit diese Meldungen direkt in eine Tabelle (mit weiteren Values wie einem Timestamp und nem Kommentar) zu schreiben ohne anschliessend noch einmal ein count(*) auf diese Tabelle zu machen?
Ungern würde ich die Statements in einem PL/SQL Block einbetten.
Zur Info: Oracle System 10gR1 EE
Viele Grüße
Matthias Tetzel
- 03 Jan 2011, 4:31 pm
-
Post visible to registered members
-
Matthias TetzelThe company name is only visible to registered members.Re^2: SQL Meldungen als Log in eine Tabelle schreiben
Hallo Herr Stark,
danke für die Antwort. Diese Funktion schein erst ab 10.2 zu funktionieren.
Viele Grüße
Matthias Tetzel
- 18 Jan 2011, 5:01 pm
-
Christoph KunzmannThe company name is only visible to registered members.Re: SQL Meldungen als Log in eine Tabelle schreiben
Hallo Herr Tetzel,
Ihr Beitrag ist schon älter, aber falls Sie doch noch eine Lösung brauchen:
Hier ein einfaches Beispiel:
--------------------------------------
BEGIN
UPDATE Tabelle t SET t.info = '1' WHERE t.seq_key = 'XXX';
dbms_output.put_line(SQL%ROWCOUNT); --SQL%ROWCOUNT enthält die Anzahl der Betroffenen Zeilen
dbms_output.put_line('SQLERRM: ' || Sqlerrm); --SQLERRM enthält Status Informationen
--Wenn kein Fehler auftritt z.B. "SQLERRM: ORA-0000: normal, successful completion". Falls ein Fehler auftritt bekommen Sie die komplette Fehlermeldung inkl. ORA-XXXXX
-- Danach noch ein Commit
COMMIT;
END;
-------------------------------------
Sie können sich dann eine Prozedur schreiben, die die übergebenen Variablen (siehe oben) mit dem Datum und Uhrzeit anreichert und diese Informationen dann in eine Tabelle schreibt.
Dies würde dann so aussehen:
---------------------------------------------------
BEGIN
UPDATE Tabelle t SET t.info = '1' WHERE t.seq_key = 'XXX';
DO_LOG(SQL%ROWCOUNT, SQLERRM); -- Eintrag bei keinem Fehler
COMMIT;
exception when others then -- Exception Handling
DO_LOG(SQL%ROWCOUNT, SQLERRM); -- Eintrag bei Fehlern
END;
Ich hoffe ich konnte Ihnen noch ein wenig helfen. Falls Sie noch Fragen haben können Sie sich gerne an mich wenden.
- 20 Apr 2011, 09:14 am
