Un procedimento almacenado funciona como una unidad en donde todas las operaciones son grabadas (commit) si y solamente si no se presenta alguna violacion de integridad (llaves foraneas, primarias, campos nulos, etc). Al presentarse alguna violacion los datos de la base de datos quedan en el estado en que se encontraban justo antes de lanzar el procedimiento almacenado.
Realmente y en lo personal evito que queden datos pendientes por actualizar cuando se lanza un procedimiento almacenado, sin embargo, puedes colocar una sentencia de codigo y que te escriba en otra tabla, no que te lance una expecion porque las excepciones provocan que pierdas las actualzaciones alcanzadas hasta ese punto.
Código SQL
[-]
when any do
begin
INSERT INTO TS_TRAZO
(DESCRIPCION)
VALUES
(texto con la observacion);
END
end
La tabla TS_TRAZO la puedes consultar despues para saber que paso.