Based on this question I would like to know if it is possible to return different table data based on an ID passed to the function. Something like (pseudocode):
CREATE FUNCTION schemaB.testFunc(p_id INT, select_param INT)
  RETURNS setof  schemaZ.Table_1
AS
$$
CASE
    WHEN select_param = 1 THEN SELECT * FROM schemaZ.Table_1 WHERE id = p_id
    WHEN select_param = 2 THEN SELECT * FROM schemaZ.Table_2 WHERE id = p_id
END;
$$
language sql;
Table_1 and Table_2 share no same columns and that invalidates the above RETURNS clause.
 
    