Merci à Guillaume pour sa question :
"Bonjour, j'obtiens l'erreur suivante à l'exécution d'un code PL/pgSQL :
le type de paramètre 10 (numeric) ne correspond pas à celui préparé dans le plan (timestamp without time zone)
Complément d'information :
- la requête porte sur une table temporaire dont le nom est réutilisé avec d'autres colonnes/types
"
Réponse :
PL/pgSQL demande implicitement la génération de plans génériques afin qu'ils soient mis en cache. PostgreSQL, comme Oracle d'ailleurs, recommandent d'avoir 1 parse pour N exécutions afin de gagner en performance et les 2 moteurs réalisent cette optimisation sous le manteau dans leur langage procédural intégré. Ici, toutefois, c'est KO puisque le plan en cache n'est plus adapté lors de l'exécution en erreur. Il faut utiliser des nom différents pour ces tables temporaires ou modifier la valeur du paramètre plan_cache_mode à force_custom_plan dans le contexte de ce programme ou encore utiliser "discard plans" avant la requête.
Erreur à l'exécution en PL/pgSQL
-
- Administrateur du site
- Messages : 299
- Enregistré le : mar. 1 sept. 2015 00:38
- Localisation : France
- Contact :
Erreur à l'exécution en PL/pgSQL
Cdlt. Phil - pgphil.ovh