Sie können eine Fehlerprotokollierungsprozedur definieren, die Sie in Ausnahmeroutinen in mehreren Anwendungen verwenden können, um eine einheitliche Fehlerprotokollierung zu erhalten.
Erstellen Sie die folgenden Tabellen, um Fehlerinformationen zu protokollieren, sobald eine Fehlerprotokollierungsprozedur ausgeführt wird.
CREATE TABLE IF NOT EXISTS error_info_table ( idx INTEGER, In UNSIGNED INTEGER, code INTEGER, state CHAR(5), err_msg CHAR(256), name CHAR(257), err_stack LONG VARCHAR, traceback LONG VARCHAR ); |
CREATE TABLE IF NOT EXISTS error_stack_trace_table ( idx UNSIGNED SMALLINT NOT NULL, stack_level UNSIGNED SMALLINT NOT NULL, user_name VARCHAR(128), proc_name VARCHAR(128), line_number UNSIGNED INTEGER NOT NULL, is_resignal BIT NOT NULL, PRIMARY KEY (idx, stack_level) ); |
Erstellen Sie die folgende Prozedur, die die Fehlerinformationen in den Tabellen error_info_table und error_stack_trace_table speichert und eine Meldung im Meldungsfenster des Datenbankservers ausgibt:
CREATE OR REPLACE PROCEDURE error_report_proc ( IN location_indicator INTEGER ) NO RESULT SET BEGIN INSERT INTO error_info_table VALUES ( location_indicator, ERROR_LINE(), ERROR_SQLCODE(), ERROR_SQLSTATE(), ERROR_MESSAGE(), ERROR_PROCEDURE(), ERROR_STACK_TRACE(), TRACEBACK() ); INSERT INTO error_stack_trace_table SELECT location_indicator, * FROM sa_error_stack_trace() ; MESSAGE 'The error message is '|| ERROR_MESSAGE() ||' and the stack trace is '|| ERROR_STACK_TRACE() TYPE WARNING TO CONSOLE ; END; |
Erstellen Sie eine Prozedur wie die folgende und rufen Sie die Fehlerprotokollierungsprozedur aus der Ausnahmeroutine auf.
CREATE OR REPLACE PROCEDURE MyProc() BEGIN DECLARE column_not_found EXCEPTION FOR SQLSTATE '52003'; MESSAGE 'Hello from MyProc.' TO CLIENT; SIGNAL column_not_found; MESSAGE 'Line following SIGNAL.' TO CLIENT; EXCEPTION WHEN column_not_found THEN MESSAGE 'Column not found handling.' TO CLIENT; CALL error_report_proc(); END ; |
![]() |
Kommentieren Sie diese Seite in DocCommentXchange.
|
Copyright © 2013, SAP AG oder ein SAP-Konzernunternehmen. - SAP Sybase SQL Anywhere 16.0 |