typestar

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

  1. ratio := 10 / 0 aborta el bloque en pleno vuelo.
  2. EXCEPTION WHEN division_by_zero THEN nombra la condición con precisión.
  3. WHEN OTHERS es el atrapatodo, con SQLERRM sosteniendo el mensaje.

Palabras clave y builtins usados aquí

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.

Escribe este fragmento

Paso 3 de 4 en Errores y triggers; paso 19 de 23 en Procedimientos almacenados de PostgreSQL.

← Anterior Siguiente →