Возвращает динамическую таблицу с неизвестными столбцами из функции PL / pgSQL

Мне нужно создать функцию, которая проверяет заданную таблицу, еслиinfowindow поле существует. Если она существует, функция должна вернутьselect * from table но если это не так, он должен вернуть дополнительныйid поле:

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;

Если я используюRETURNS SETOF RECORDSКогда я делаю выбор функции, мне нужно указать столбцы, которые я не знаю. И если я используюRETURNS TABLE Мне нужно также указать поля, поэтому я не знаю, как это сделать.

Ответы на вопрос(1)

Ваш ответ на вопрос