Gibt eine dynamische Tabelle mit unbekannten Spalten aus der PL / pgSQL-Funktion zurück
Ich muss eine Funktion erstellen, die für eine bestimmte Tabelle prüft, ob dieinfowindow
Feld existiert. Wenn es existiert, muss die Funktion zurückkehrenselect * from table
Wenn dies nicht der Fall ist, muss ein zusätzlicher Wert zurückgegeben werdenid
Feld:
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;
Wenn ich benutzeRETURNS SETOF RECORDS
Wenn ich die Funktion auswähle, muss ich die Spalten angeben, die ich nicht kenne. Und wenn ich benutzeRETURNS TABLE
Ich muss auch die Felder angeben, damit ich nicht weiß, wie es geht.