Oui, c'est un problème connu.
PL/pgSQL (comme toute autre fonction, sauf sur SQL
) est une « boîte noire » pour PostgreSQL, il n'est donc pas vraiment possible de détecter des erreurs sauf lors de l'exécution.
Vous pouvez faire plusieurs choses :
- enveloppez votre fonction en appelant
SQL
requêtes dansBEGIN
/COMMIT
déclarations afin d'avoir un meilleur contrôle sur les erreurs ; - ajouter
EXCEPTION
blocs à votre code pour détecter et suivre les erreurs. Notez cependant que cela affectera les performances de la fonction ; - utiliser
plpgsql_check
extension , développé par Pavel Stěhule, qui est l'un des principaux contributeurs au développement PL/pgSQL. Je suppose que cette extension finira par entrer dans le cœur de PostgreSQL, mais cela prendra un certain temps (nous sommes maintenant dans l'état 9.4beta3) ; - Vous pouvez également vous pencher sur cette question connexe :vérification de la syntaxe postgresql sans exécuter la requête
Et il semble vraiment que vous ayez un énorme besoin d'un cadre de test unitaire.