"Ray O'Donnell" <r...@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


Reply via email to