Re: PostgreSQL include directive in plpgsql language PL/pgSQL

Поиск
Список
Период
Сортировка
От PALAYRET Jacques
Тема Re: PostgreSQL include directive in plpgsql language PL/pgSQL
Дата
Msg-id 890069544.207914575.1757324233380.JavaMail.zimbra@meteo.fr
обсуждение исходный текст
Ответ на Re: PostgreSQL include directive in plpgsql language PL/pgSQL  (Merlin Moncure <mmoncure@gmail.com>)
Ответы Re: PostgreSQL include directive in plpgsql language PL/pgSQL
Re: PostgreSQL include directive in plpgsql language PL/pgSQL
Список pgsql-general
Hello,
Thanks for your response.

# Currently, I have a function text and a function array with the same body but a distinct type return.
-> Example with the array of text function :
SELECT public.calfxi3s_all_elements_text_array(12345678, '2025-01-01 00:00') ;
                    calfxi3s_all_elements_text_array
-------------------------------------------------------------------------
 {3.2,sonic,"Capteur Vent ultrasonique compact Brand xxx",2,-0.123,0.321}
That gives some parameters : the value of the wind strength (3.2), the kind of sensor (sonic), the model (Capteur ...), the environmment (2), two coefficients (-0.123,0.321)

Then I have several functions using the previous one, for example public.calfxi3s_value() :

CREATE OR REPLACE FUNCTION public.calfxi3s_value(np integer, dt timestamp without time zone)
 RETURNS numeric
 LANGUAGE sql
 STABLE
AS $function$
SELECT (public.calfxi3s_all_elements_text_array(np,dt))[1]::numeric ;
$function$

I can manage with this method, but it shoud be better with a include directive.
Now, it doesn't exist. so I will do in an other way

A+

De: "Merlin Moncure" <mmoncure@gmail.com>
À: "PALAYRET Jacques" <jacques.palayret@meteo.fr>
Cc: pgsql-general@lists.postgresql.org
Envoyé: Vendredi 5 Septembre 2025 18:21:08
Objet: Re: PostgreSQL include directive in plpgsql language PL/pgSQL

On Fri, Sep 5, 2025 at 7:14 AM PALAYRET Jacques <jacques.palayret@meteo.fr> wrote:
Hello,

In a PL/pgSQL function, there is no command for sharing a common part of the body of several functions, is there?

In my case, I would like a function that returns a numeric value; this value is associated with several other parameters, some numeric and others textual.
It would not be practical for maintenance to have several functions (one function for each given parameter) with much of the code being identical.

Presently, I have a text function with all the parameters in return and a function for each parameter based on the first one (with all the parameters), using substr(), position(), etc.
For me, I think it would be easier (and perhaps faster) to use some kind of #include in the body of all the functions.

 Can you provide some examples of what you are trying to accomplish?

There may be some workarounds using immutable functions other tricks, but I'm not 100% sure I have my head around your issue.

merlin

В списке pgsql-general по дате отправления: