Datenbanken

Datenbanken

Posts 1-4 of 4
  • Matthias Tetzel
    Matthias Tetzel
    The 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
  • Post visible to registered members
  • Matthias Tetzel
    Matthias Tetzel
    The 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
  • Christoph Kunzmann
    Christoph Kunzmann
    The 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.