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.