"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