Gestire le eccezioni
Nelle diapositive abbiamo parlato di fornire il contesto corretto per la risoluzione. Un aspetto spesso trascurato quando si registrano i messaggi è la motivazione più profonda che li spiega. Spesso gli errori sono generici, come "Valore non valido" o "Data non valida". Possiamo però arricchire questi messaggi con dettagli e contesto.
Qui lavoreremo con l'A1C, cioè la percentuale di globuli rossi che hanno zucchero legato all'emoglobina. In genere, per i pazienti non affetti i valori a digiuno sono inferiori al 5,7%, tra il 5,7% e il 6,4% indicano prediabete, e oltre il 6,5% è in genere un indicatore di diabete non gestito.
Questo esercizio fa parte del corso
Transazioni e gestione degli errori in PostgreSQL
Istruzioni dell'esercizio
- Completa il blocco di transazione compilando le istruzioni
DOeBEGINdove necessario. - Aggiungi un'eccezione che inserisca
'a1c is typically less than 14'nella colonnacontextdella tabellaerrors. - Termina l'eccezione specificando il linguaggio procedurale utilizzato.
Esercizio pratico interattivo
Prova a risolvere questo esercizio completando il codice di esempio.
-- Add a DO function
___ $$
-- BEGIN a transaction block
___
INSERT INTO patients (a1c, glucose, fasting)
values (20, 89, TRUE);
-- Add an EXCEPTION
____
-- Catch all exception types
WHEN others THEN
INSERT INTO errors (msg, detail, ___) VALUES
(
'failed to insert',
'This a1c value is higher than clinically accepted norms.',
'___'
);
END;
-- Make sure to specify the language
____ language 'plpgsql';
-- Select all the errors recorded
SELECT * FROM errors;