Sie müssen die Funktion wie folgt aufrufen:
select * from foo(6);
was so etwas zurückgibt:
project_id | project_name | project_type | project_description | project_status
-----------|--------------|--------------|---------------------|----------------
6 | test project | inbound | inbound test | processing
Es ist eine Eigenart von Postgres, dass es in beide Richtungen aufgerufen werden kann und Ihnen ein Ergebnis liefert. Vielleicht möchten Sie die Dokumentation zu Set Returning Functions noch etwas genauer überprüfen, es gibt auch andere Möglichkeiten, dies zu tun. Oh, es gibt eine Wiki-Seite, die für plpgsql geschrieben wurde, aber das meiste gilt auch für SQL-Funktionen:http://wiki.postgresql.org/wiki/Return_more_than_one_row_of_data_from_PL/pgSQL_functions