ich mich gefragt, ob es einen Weg gibt dynamische SQL-Anweisungen, deren Ausführung brach während der Laufzeit zu finden, falls es keine richtige Ausnahme war in der/SQL-Programmeinheit PL Handhabung, die die Dynanic genannt SQL.Finden schlechte dynamische SQL-Anweisungen enthält Syntaxfehler in Oracle
procedure will_crash is
begin
-- 1000 dynamic sql statements here ..
execute immediate 'updaXte dual set X = ''Z'' ' ;
-- ... and 1000 more dynamic sql statements here ..
commit;
end; --> NO proper exception handling for logging the last sql statement
Falls eine programmierte Nachtzeiteinheit Hunderte von dynamischen SQL-Anweisungen enthält, würde ich gerne herausfinden, welche ohne Debugging kaputt gegangen ist. Protokolliert Oracle irgendetwas in seinen Systemansichten?
Definieren Sie "pleite". Höchstwahrscheinlich, nein. Wenn es sich um einfache Syntaxfehler handelt, wird dies nicht protokolliert. Wenn die geplante "Nachtzeit-Programmeinheit" über die Datenbank geplant wird und der Fehler bis zum Aufrufer weitergegeben wird, wird der Fehler-Stack protokolliert (abhängig davon, welchen Zeitplanungsmechanismus Sie verwenden). Diese Stack-Ablaufverfolgung würde eine Zeilennummer enthalten, die Ihnen dabei helfen könnte, anzunehmen, dass Sie tatsächlich Tausende von Codezeilen haben, anstatt eine Schleife zu erstellen, die Tausende von verschiedenen SQL-Anweisungen erstellt. –
Vielleicht hilft das? https://oracle-base.com/articles/10g/dml-error-logging-10gr2 – OldProgrammer
ich mein Paket mit execute_immediate Verfahren verwenden - Wrapper um DBMS_SQL/sofort auszuführen. Es verfügt über Buildin-Protokollierung von SQL-Text vor der Ausführung, Ausführungszeit, sql% rowcount und explain_plan nach der Ausführung. Im Fehlerfall protokolliert es Fehlerstack, Code usw. – Rusty