Sí, este es un problema conocido.
PL/pgSQL (como cualquier otra función, excepto en SQL
) es una "caja negra" para PostgreSQL, por lo que no es realmente posible detectar errores excepto en tiempo de ejecución.
Puedes hacer varias cosas:
- envuelve tu función llamando a
SQL
consultas enBEGIN
/COMMIT
declaraciones para tener un mejor control sobre los errores; - añadir
EXCEPTION
bloques a su código para detectar y rastrear errores. Tenga en cuenta, sin embargo, que esto afectará el rendimiento de la función; - use
plpgsql_check
extensión , desarrollado por Pavel Stěhule, quien es uno de los principales contribuyentes al desarrollo de PL/pgSQL. Supongo que eventualmente esta extensión se convertirá en el núcleo de PostgreSQL, pero llevará algo de tiempo (ahora estamos en el estado 9.4beta3); - También puede consultar esta pregunta relacionada:comprobación de sintaxis postgresql sin ejecutar la consulta
Y realmente parece que tiene una gran necesidad de un marco de pruebas unitarias.