Manejo de excepciones
En las diapositivas, hablamos de proporcionar el contexto adecuado para la resolución. Un aspecto que a menudo se pasa por alto al registrar mensajes es la razón de fondo. Muchas veces los errores son genéricos, como "Bad value" o "Invalid date". Sin embargo, podemos añadir detalles y contexto para enriquecer esos mensajes.
Aquí vamos a trabajar con la A1C, que es el porcentaje de glóbulos rojos con azúcar unida a la hemoglobina. Normalmente, los valores en ayunas están por debajo del 5,7 % para personas no afectadas; del 5,7 % al 6,4 % indican prediabetes; y por encima del 6,5 % suele ser un indicador de diabetes no controlada.
Este ejercicio forma parte del curso
Transacciones y manejo de errores en PostgreSQL
Instrucciones del ejercicio
- Completa el bloque de transacción rellenando las sentencias
DOyBEGINdonde corresponda. - Añade una excepción que inserte
'a1c is typically less than 14'en la columnacontextde la tablaerrors. - Finaliza la excepción especificando el lenguaje procedimental utilizado.
Ejercicio interactivo práctico
Prueba este ejercicio y completa el código de muestra.
-- 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;