From: | Julien Rouhaud <rjuju123(at)gmail(dot)com> |
---|---|
To: | Guillaume Lelarge <guillaume(at)lelarge(dot)info> |
Cc: | Alain Benard <alain(dot)benard(at)inrae(dot)fr>, "pgsql-fr-generale(at)postgresql(dot)org" <pgsql-fr-generale(at)postgresql(dot)org> |
Subject: | Re: Bug exécution successive même procedure plpgsql |
Date: | 2022-09-09 04:05:27 |
Message-ID: | 20220909040527.7ud3ur7rxfb6m7yi@jrouhaud |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-fr-generale |
On Thu, Sep 08, 2022 at 10:25:30PM +0200, Guillaume Lelarge wrote:
>
> Le jeu. 8 sept. 2022 à 14:33, Alain Benard <alain(dot)benard(at)inrae(dot)fr> a écrit :
>
> > Bonjour,
> >
> > Je suis devant un problème qui me dépasse lorsque j’exécute plusieurs fois
> > une même procédure stockée avec des arguments différents en me retournant
> > un message tel que le suivant :
> >
> > Erreur maprocedure - le type de paramètre 12 (double precision) ne
> > correspond pas à celui préparé dans le plan (integer)
>
> Les plans des routines PL/pgsql sont conservés en mémoire par la session,
> c'est peut être cela qui entre en jeu ici. Cela peut être autre chose. Sans
> exemple concret et complet (et un message d'erreur en anglais), difficile
> d'en dire plus.
J'imagine que la partie manquante dans la fonction ressemble à
requete = format('SELECT cle, x, y FROM %I', nom_table);
Et effectivement cela posera problème en cas de changement de type dans la
relation source. Vous pouvez résoudre le problème en castant dans la requête
et non lors de l'affectation, quelquechose comme:
requete = format('SELECT cle, x::double precision, y::double precision FROM %I', nom_table);
From | Date | Subject | |
---|---|---|---|
Next Message | Alain Benard | 2022-09-09 06:56:19 | RE: Bug exécution successive même procedure plpgsql |
Previous Message | Guillaume Lelarge | 2022-09-08 20:25:30 | Re: Bug exécution successive même procedure plpgsql |