Devuelve la tabla dinámica con columnas desconocidas de la función PL / pgSQL

Necesito crear una función que verifique en una tabla dada si elinfowindow el campo existe Si existe, la función debe devolverselect * from table pero si no lo hace, debe devolver un adicionalid campo:

CREATE OR REPLACE FUNCTION getxo_ocx_cincu_preparar_infowindow(
                                              guretabla character varying)
  RETURNS TABLE AS
$BODY$ 
DECLARE
    tabla ALIAS FOR $1;

BEGIN

IF  EXISTS (SELECT 1
   FROM   pg_namespace n
   JOIN   pg_class     c ON c.relnamespace = n.oid
   JOIN   pg_attribute a ON a.attrelid = c.oid 
   WHERE  n.nspname = current_schema()  -- default to current schema
   AND    c.relname = tabla
   AND    a.attname = 'infowindow'
   AND    NOT a.attisdropped)
THEN
    RETURN QUERY EXECUTE 'SELECT * from ' ||tabla ;
ELSE
    RETURN QUERY EXECUTE 'SELECT *, ID:' || id::text ||' as infowindow
                                   from ' ||tabla ;
END IF;

END;
$BODY$
  LANGUAGE plpgsql VOLATILE;

Si yo usoRETURNS SETOF RECORDS, cuando selecciono la función, necesito especificar las columnas, lo cual no sé. Y si usoRETURNS TABLE También necesito especificar los campos, así que no sé cómo hacerlo.

Respuestas a la pregunta(1)

Su respuesta a la pregunta