excepciones en postgres

excepciones en postgres

Hola a todos, estoy investigando sobre excepciones en postgres, como puedo programar uno para que estire los mensajes desde la bd?.
agradezco cualquier información sobre esto.
Saludos

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.

excepciones en postgres

sirven para mostrar un mensaje y obortar la operacion dependiendo de la condicion a cumplir..puedes utilizar con el raise. Ej:
raise exception 'el mensaje que quieres!';

excepciones en postgres

Si lo que deseas es capturar excepciones de validacion de negocio,
puedes utilizar un RAISE EXCEPTION 'texto', de lo contrario, si deseas capturar una excepcion del gestor como violacion de restricciones unique, not null, etc, puedes utilizar dentro de tu procedimiento algo similar a esto:

EXCEPTION
WHEN datatype_mismatch THEN
RETURN -1;
WHEN not_null_violation THEN
RETURN -2;
WHEN unique_violation THEN
RETURN -3;
WHEN foreign_key_violation THEN
RETURN -4;
WHEN check_violation THEN
RETURN -5;

para mas informacion puedes consultar este link:

http://www.postgresql.org/docs/8.1/static/plpgsql-control-structures.htm...

Muchas gracias por

Muchas gracias por contestar,me ha sido de gran utilidad...
Saludos

como atrapar cualquier tipo de excepciones

como puedo atrapar excepciones en postgres de forma mas general por emjemplo al insertar un registro excepciones como campos nulo, campos sin dereferencia a claves foraneas pero de forma general es decir que me capture cualquier tipo de exception algo asi como el java que se puede usar Exception para capturar excepciones, pero en este caso en postgres, agradesco cualquier tipo de ayuda.... respuestas al mail hugorb@hotmail.com.

Atrapar cualquier excepción

Hola Hugo, antes de responderte quería comentarte que no es "bueno" que pidas que te manden las respuestas a un determinado email. Aquí estamos para aprender y, por ello, lo más conveniente es compartir las distintas posibilidades de una pregunta.

Pero a lo que íbamos, en un procedimiento almacenado podrás capturar "todas" las excepciones de la siguiente forma:

sql := 'INSERT INTO.... ';
BEGIN
  EXECUTE sql;

  EXCEPTION
     WHEN OTHERS THEN
        RAISE EXCEPTION 'Falló la orden SQL: %. El error fue: %',sql,SQLERRM;
END;

Incluso tras el EXECUTE podrías capturar el nº de filas a las que afectó la orden SQL y añadir un "nivel de comprobación extra":

GET DIAGNOSTICS filasAfectadas = ROW_COUNT;

Y tras el END;:

IF filasAfectadas = 0 THEN
   RAISE EXCEPTION 'La consulta % no falló, pero debería haber insertado 1 registro',sql;
END IF;

Un saludo.

Enviar nuevo comentario

  • Las direcciones de las páginas web y las de correo se convierten en enlaces automáticamente.
  • Etiquetas HTML permitidas: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd><h2><pre>
  • Saltos automáticos de líneas y de párrafos.

Más información sobre opciones de formato

Image CAPTCHA
Enter the characters shown in the image.