On Wed, May 30, 2012 at 9:03 AM, yi huang <yi.codeplayer@xxxxxxxxx> wrote: > It turns out i also need to define a type for the result record of `foo`, > because record can't reveal the structure of the result (it complains: > record "r" has no field "somerow"). > I have to created this type: > > create type foo_result as (somerow SomeTable, otherinfo varchar); > > then change `r record;` to `r foo_result;` , no need change `foo` itself, > and it works now. > > I don't know is this the best way to do this though. I am not sure my assumption is correct but have not you tried to do it like this SELECT * FROM foo(seq) AS (somerow SomeTable, otherinfo varchar) it will probably help to avoid creation of a separate type for the function result. > >> >> >> regards >> >> Pavel >> >> 2012/5/30 yi huang <yi.codeplayer@xxxxxxxxx>: >> > I'm porting a oracle function to postgresql, which has signature like >> > this: >> > >> > FUNCTION foo >> > ( seq IN varchar >> > , somerow OUT SomeTable >> > , otherinfo OUT varchar >> > ) >> > >> > It's easy to port this function itself to postgresql, but i have problem >> > to >> > execute this function and assign the results into variables: >> > >> > SELECT (foo(seq)).* INTO (v_somerow, v_otherinfo); >> > >> > It complains v_somerow can not be row type. >> > >> > How to handle the result of function foo? >> > >> > Best regards. >> > YiHuang. > > > > > -- > http://yi-programmer.com/ -- Sergey Konoplev a database and software architect http://www.linkedin.com/in/grayhemp Jabber: gray.ru@xxxxxxxxx Skype: gray-hemp Phone: +79160686204 -- Sent via pgsql-general mailing list (pgsql-general@xxxxxxxxxxxxxx) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-general