I have a set of tables that share the same fields (some timestamps and users names used for version control). I need to create a function with dynamic sql that uses a table_name and a timestamp as arguments and returns a set of the same table.
The query I need is a bit more complicated, but for my question the following example should be enough.
This is how I'm trying to create the function:
CREATE OR REPLACE FUNCTION "vsr_versioning_at_time"(_t regclass
, _d timestamp without time zone)
RETURNS SETOF _t AS
$$
BEGIN
EXECUTE 'SELECT DISTINCT ON (gid) *
FROM '|| _t ||
'WHERE vrs_start_time <= '|| _d ||
'ORDER BY gid, vrs_start_time DESC';
END
$$
LANGUAGE plpgsql;
The creation of this function fails since _t
is not recognized by the RETURN SETOF _t
.
_t
? Is there actually a type or table named_t
?