public inbox for [email protected]
help / color / mirror / Atom feedFrom: PALAYRET Jacques <[email protected]>
To: Merlin Moncure <[email protected]>
Cc: [email protected]
Subject: Re: PostgreSQL include directive in plpgsql language PL/pgSQL
Date: Mon, 8 Sep 2025 09:37:13 +0000 (GMT)
Message-ID: <[email protected]> (raw)
In-Reply-To: <CAHyXU0zNE3CuPs2433GZtVh9SbrkyTUwGmAiy+yJuhz484gPUw@mail.gmail.com>
References: <[email protected]>
<CAHyXU0zNE3CuPs2433GZtVh9SbrkyTUwGmAiy+yJuhz484gPUw@mail.gmail.com>
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" <[email protected]>
À: "PALAYRET Jacques" <[email protected]>
Cc: [email protected]
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 < [ mailto:[email protected] | [email protected] ] > 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
reply
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Reply to all the recipients using the --to and --cc options:
reply via email
To: [email protected]
Cc: [email protected], [email protected], [email protected]
Subject: Re: PostgreSQL include directive in plpgsql language PL/pgSQL
In-Reply-To: <[email protected]>
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
This inbox is served by agora; see mirroring instructions
for how to clone and mirror all data and code used for this inbox