On Sun, Oct 25, 2026 at 3:17 PM Adrian Klaver <[email protected]>
wrote:

> On 10/25/26 7:55 AM, Mark wrote:
> > Hi Adrian
> >
> > Thanks for the input
> >
> > On Sun, Oct 25, 2026 at 2:42 PM Adrian Klaver <[email protected]
> > <mailto:[email protected]>> wrote:
>
> >
> >     And from here:
> >
> >     https://www.postgresql.org/docs/current/plpgsql-
> >     declarations.html#PLPGSQL-DECLARATION-PARAMETERS <https://
> >     www.postgresql.org/docs/current/plpgsql-declarations.html#PLPGSQL-
> >     DECLARATION-PARAMETERS>
> >
> >     "To call a function with OUT parameters, omit the output
> >     parameter(s) in
> >     the function call: ..."
> >
> >
> > In the second case with 3 parameters:  SELECT getSessDbKey (iSessionId
> > => '1234'::text, iUser => ....
> > This was called from the psql command line, the OUT values were returned
> > in the terminal, example:
> > getsessdbkey
> > ---------------
> > (3,,keyFound)
>
> Which is the correct process.
>
> When you are calling(SELECTing) the function inside the other function
> you are doing:
>
> SELECT getSessDbKey (jSessionId, jUser, 'functionName'::text,
> vSessDbKey, vSessRet, vGetSessDbKeyMess);
>
> There six arguments to to the function.
>
> You get this:
>
> ERROR:  function getsessdbkey(text, text, text, bigint, customType,
> text) does not exist
>
> because your functions signature is:
>
> getsessdbkey(text, text, text)
>
> The OUT parameters are not exposed, so you only get to use three
> arguments to the function.
>
> If you want a parameter to be dual purpose then you can declare it INOUT.
>
> When calling the function (and when I get the error) this is from another
function using the syntax:
SELECT getSessDbKey (jSessionId, jUser, 'functionName'::text, vSessDbKey,
vSessRet, vGetSessDbKeyMess);

The function signature according to \df getSessDbKey is:
Schema |     Name     | Result data type |
                Argument data types
        | Type
--------+--------------+------------------+---------------------------------------------------------------------------------------------------------------------+------
 public | getsessdbkey | record           | isessionid text, iuser text,
ifunction text, OUT osessdbkey bigint, OUT osessret retmessage, OUT
retsessdbmess text | func

with 6 parameters, which is why the call has 6 parameters. If you are aware
of a way to find the function signature, do please let me know?

For the command line call only 3 parameters were provided and the terminal
listed the OUT 3 parameters I showed in my previous response

I do not have / need / have built around INOUT parameters


> >
> >
> > Thanks for the link, for the 1st case I had defined the IN and OUT
> > parameters in the parent function, I have also just tried the:
> > parameterName ALIAS FOR $x , but that did not make a difference
> >
> > Mark
> >
> > Edit I have just seen your follow up message, there are no INOUT
> parameters
> >
> >      >
> >      > I just tried to user CALL and the HINT was to use SELECT
> >      >
> >      > Mark
> >      >
> >      > On Sun, Oct 25, 2026 at 1:00 PM Tom Lane <[email protected]
> >     <mailto:[email protected]>
> >      > <mailto:[email protected] <mailto:[email protected]>>> wrote:
> >      >
> >      >     Mark <[email protected] <mailto:[email protected]>
> >     <mailto:[email protected] <mailto:[email protected]>>> writes:
> >      >      > I am getting the following error which has been driving me
> >     crazy:
> >      >      > ERROR:  function getsessdbkey(text, text, text, bigint,
> >      >     customType, text)
> >      >      > does not exist
> >      >
> >      >     (1) search_path problem, perhaps?
> >      >     (2) are you using a CALL statement to call it?
> >      >
> >      >                              regards, tom lane
> >      >
> >
> >
> >     --
> >     Adrian Klaver
> >     [email protected] <mailto:[email protected]>
> >
>
>
> --
> Adrian Klaver
> [email protected]
>

Reply via email to