Re: Bug exécution successive même procedure plpgsql

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);

In response to

Responses

Browse pgsql-fr-generale by date

  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