Solución:
Desafortunadamente, deberá hacerlo en el lado del cliente, ya que actualmente no es posible obtenerlo en PSQL. Hay una solicitud de función en el rastreador de Firebird, que se implementó para Firebird 4, que se espera que se lance en 2019.
Consulte las notas de la versión de Firebird 4 Beta 2, sección Función del sistema RDB $ ERROR () (advertencia: el enlace podría romperse con la próxima versión o con la versión GA):
La función
RDB$ERROR()
toma un contexto de error de PSQL como entrada y devuelve el contexto específico de la excepción activa. Su alcance se limita al contexto del bloque de manejo de excepciones en PSQL. Fuera del bloque de manejo de excepciones,RDB$ERROR
siempre contiene
NULL
.El tipo de valor devuelto depende del contexto.
Reglas de sintaxis
RDB$ERROR ( context ) context ::= { GDSCODE | SQLCODE | SQLSTATE | EXCEPTION | MESSAGE }
[..]
Ejemplo
BEGIN ... WHEN ANY DO EXECUTE PROCEDURE P_LOG_EXCEPTION(RDB$ERROR(MESSAGE)); END