Search Postgresql Archives

Function that creates a custom table AND returns it = impossible in pg?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



What I want is something similar to this:

CREATE OR REPLACE FUNCTION f( /* "some args..." */)
  RETURNS SETOF RECORD AS
$BODY$
DECLARE
 ...
BEGIN
 DROP TABLE IF EXISTS tbl_temp;

 CREATE TEMPORARY TABLE tbl_temp(
  -- "based on args..."
  );

 WHILE
  INSERT INTO tbl_temp VALUES (/*"some values"*/);
 END LOOP;

 /*create indexes on it, manipulate, whatever...*/

 RETURN QUERY SELECT * FROM tbl_temp;

END;
$BODY$
  LANGUAGE 'plpgsql'

The point is: only the function knows the structure (i.e. rowtype) of the 
created table, not the initializer. The initializer is only supposed to 
supply the arguments, run"SELECT * FROM f(some args);" and fetch the 
results. Is this possible in Postgres??

(And for those who insist: no, the intializer can not run SELECT * FROM 
f(some args) AS table("table structure...");" This would imply the 
initializer already knows what the function will do. It goes beyond the 
point of modularity: why not just skip the function then and let the 
initializer write the whole query itself?)

Original post: 
http://forums.devshed.com/postgresql-help-21/function-that-creates-a-custom-table-and-returns-it-impossible-675540.html

Kind regards,
Davor 



-- 
Sent via pgsql-general mailing list (pgsql-general@xxxxxxxxxxxxxx)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Postgresql Jobs]     [Postgresql Admin]     [Postgresql Performance]     [Linux Clusters]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Books]     [PHP Databases]     [Postgresql & PHP]     [Yosemite]
  Powered by Linux