how create function in postgresql tablename argument , function returns result set of table passed argument query "select * table". here table argument passed function.
what want possible , utterly useless.
the function asking this:
create function selectall(tbl name) returns setof record $$ begin return query execute format('select * %i', tbl); end; $$ language plpgsql; you need set returning function (srf) because table may have multiple rows. needs return record because different tables return different sets of columns. can not use srf in select list:
test=# select selectall('student'); error: set-valued function called in context cannot accept set context: pl/pgsql function selectall(name) line 3 @ return query you can use row source, query becomes longer simple select * student. can not use so:
test=# select * selectall('student'); error: column definition list required functions returning "record" line 1: select * selectall('student'); you can use it specifying alias , column definitions:
test=# select * selectall('student') t(id int, first_name text, col3 boolean, ...); now compare to:
test=# select * student;
Comments
Post a Comment