7
¿Es posible crear condiciones personalizadas cuando presento una excepción? Considere el siguiente ejemplo:Condiciones de excepción personalizadas de PostgreSQL
BEGIN
y := x/0;
EXCEPTION
WHEN division_by_zero THEN
RAISE NOTICE 'caught division_by_zero';
RETURN x;
END;
Aquí utilizo condición 'division_by_zero' para detectar la excepción. Lo que me gustaría hacer es algo como esto:
BEGIN
[...]
RAISE custom_condition;
EXCEPTION
WHEN custom_condition THEN
[...]
END;
de modo que no interfieran con las posibles excepciones estándar. Podría simplemente hacer y: = 1/0; y atrapa division_by_zero, pero no se ve bien.
Gracias! Funciona con una corrección: el parámetro * errcode * debe tener exactamente cinco dígitos/caracteres ASCII en mayúsculas, de lo contrario causará un error ('código SQLSTATE inválido'). Aquí hay una nota de su enlace: 'Nota: Al especificar un código de error mediante el código SQLSTATE, no está limitado a los códigos de error predefinidos, sino que puede seleccionar cualquier código de error que consta de cinco dígitos y/o letras ASCII en mayúsculas, otros de 00000. Se recomienda que evite arrojar códigos de error que terminen en tres ceros, porque estos son códigos de categoría y solo pueden quedar atrapados atrapando toda la categoría. – Snifff
@Sniff: Gracias - He corregido el caso de los caracteres de errcode – Tometzky
@Tometzky: ¿Qué propiedad bajo el archivo exception.diagnostic muestra 'Bar is prohibited' debajo? ¿Es MESSAGE_TEXT o PG_EXCEPTION_DETAIL o PG_EXCEPTION_HINT? (documentos: http://goo.gl/F5w1y) – obimod