Zacznij terazZacznij za darmo

Pobieranie danych ze stosu diagnostycznego

Diagnostyka stosowa umożliwia pobranie wewnętrznego komunikatu błędu PostgreSQL oraz szczegółów wyjątku. Wróćmy do tabeli pacjentów i spróbujmy dodać wartość A1C przekraczającą dopuszczalny limit. Spowoduje to wyjątek naruszenia ograniczenia CHECK, który możemy przechwycić. Użyjemy diagnostyki stosowej w procedurze obsługi wyjątków, aby wzbogacić rejestrowane informacje o błędach.

To ćwiczenie jest częścią kursu

Transakcje i obsługa błędów w PostgreSQL

Zobacz kurs

Instrukcje do ćwiczenia

  • W bloku DECLARE zadeklaruj dwie zmienne – exc_message i exc_detail – jako typ text.
  • Pobierz stos diagnostyczny i przypisz do exc_message wartość MESSAGE_TEXT, a do exc_detail wartość PG_EXCEPTION_DETAIL.
  • Wstaw exc_message i exc_detail odpowiednio do pól msg i detail tabeli błędów.

Interaktywne ćwiczenie praktyczne

Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.

DO $$ 
-- Declare our text variables: exc_message and exc_detail 
___
   ___ text;
   exc_detail ___;
BEGIN 
    INSERT INTO patients (a1c, glucose, fasting) 
    values (20, 89, TRUE);
EXCEPTION 
WHEN others THEN
    -- Get the exception message and detail via stacked diagnostics
	___ ___ ___ 
    	exc_message = ___,
        exc_detail = ___;
    -- Record the exception message and detail in the errors table
    INSERT INTO errors (___, detail) VALUES (exc_message, ___);
END;
$$ language 'plpgsql';

-- Select all the errors recorded
SELECT * FROM errors;
Edytuj i uruchom kod