Re: Combining scalar and row types in RETURNING - Mailing list pgsql-general

From Tom Lane
Subject Re: Combining scalar and row types in RETURNING
Date
Msg-id 858949.1748969638@sss.pgh.pa.us
Whole thread Raw
Responses Re: Combining scalar and row types in RETURNING
List pgsql-general
"Ray O'Donnell" <ray@rodonnell.ie> writes:
> Can you combine scalar and row types in a RETURNING clause?

I think so.

> declare
>      m_action text;
>      m_new_data record;
> begin
>      merge into my_table t
>      using (
>          ....
>      ) s
>      on (t.id = s.id)
>      when matched then
>          update .....
>      when not matched then
>          insert .....
>      returning
>          merge_action(), t.*
>      into
>         m_action, m_new_data;

I think the problem here is that "t.*" gets expanded into a list of
all of t's columns, just as would happen in a SELECT's output list.
Try

    returning merge_action(), t

It might also be necessary to declare the target variable
"m_new_data" as being of type my_table rather than generic
"record"; not sure about that.

            regards, tom lane



pgsql-general by date:

Previous
From: Dominique Devienne
Date:
Subject: Re: current_role of caller of a DEFINER function
Next
From: Ray O'Donnell
Date:
Subject: Re: Combining scalar and row types in RETURNING