Bloques EXCEPTION en SQL
División por cero, atrapada por nombre de condición; el trabajo del bloque se revierte primero.
-- EXCEPTION catches by condition name; the block's work rolls back.
DO $$
DECLARE
ratio NUMERIC;
BEGIN
ratio := 10 / 0;
RAISE NOTICE 'never reached: %', ratio;
EXCEPTION
WHEN division_by_zero THEN
RAISE NOTICE 'caught: dividing by zero';
WHEN OTHERS THEN
RAISE NOTICE 'caught something else: %', SQLERRM;
END;
$$;
Cómo funciona
ratio := 10 / 0aborta el bloque en pleno vuelo.EXCEPTION WHEN division_by_zero THENnombra la condición con precisión.WHEN OTHERSes el atrapatodo, conSQLERRMsosteniendo el mensaje.
Palabras clave y builtins usados aquí
BEGINDECLAREDOENDEXCEPTIONNUMERICTHENWHEN
El intento, en números
- Líneas
- 14
- Caracteres a escribir
- 314
- Tokens
- 44
- Ritmo de tres estrellas
- 65 tpm
Al ritmo de tres estrellas de 65 tokens por minuto, este intento toma unos 41 segundos.
Paso 3 de 4 en Errores y triggers; paso 19 de 23 en Procedimientos almacenados de PostgreSQL.