Pisanie instrukcji DO
Podczas czyszczenia danych często można natrafić na błędne daty. Taka sytuacja powoduje wyjątek i przerywa wykonywanie instrukcji SQL. Używając jednak funkcji DO z obsługą wyjątków, można doprowadzić instrukcję do końca. Zobaczmy, jak można obsłużyć tego rodzaju wyjątek na przykładzie tabeli patients i kolumny created_on. Przy okazji wypróbujemy funkcję w stylu DO.
To ćwiczenie jest częścią kursu
Transakcje i obsługa błędów w PostgreSQL
Instrukcje do ćwiczenia
- Utwórz funkcję
DO, aby zainicjować przechwytywanie wyjątku. - Rozpocznij transakcję (BEGIN), w której za pomocą
INSERTdodasz wiersz (a1c=5.8,glucose=89,fasting=TRUE,created_on= '37-03-2020 01:15:54') do tabeli patients. - Dodaj procedurę obsługi
EXCEPTION, która wstawia wartość'bad date'do kolumnydetailtabelierrorsw przypadku wystąpienia błędu. - Wskaż język
'plpgsql'.
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
-- Create a DO $$ function
____ ____
-- BEGIN a transaction block
BEGIN
INSERT INTO patients (a1c, glucose, fasting, created_on)
VALUES (____, ____, ____, '37-03-2020 01:15:54');
-- Add an EXCEPTION
___
-- For all all other type of errors
WHEN others THEN
INSERT INTO errors (msg, detail)
VALUES ('failed to insert', '____');
END;
-- Make sure to specify the language
$$ language '____';
-- Select all the errors recorded
SELECT * FROM errors;