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
SQLconsultas enBEGIN/COMMITdeclaraciones para tener un mejor control sobre los errores; - añadir
EXCEPTIONbloques 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_checkextensió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.