pgSQL Feldnamen zur Laufzeit

Hallo Leutz, evtl. gibts ja eine Lösung für mein Problem…
Ich möchte mit Hilfe einer Funktion Mehrere Datensätze aus einer Tabelle importieren, welche zur Laufzeit mit unterschiedlicher Struktur erzeugt wird. Die erf. Mappings sind in einer weiteren Tabelle abgelegt. Folgendermassen würde ich das gerne machen:

CREATE OR REPLACE FUNCTION fn_myfunc(integer) RETURNS BOOLEAN AS
$$
DECLARE 
aCursor CURSOR FOR SELECT....;
sCat NAME;
aRow RECORD;
BEGIN
sCat := (SELECT field_name FROM mapping_table WHERE...);
OPEN aCursor;
  WHILE FOUND LOOP
    FETCH aCursor INTO aRow;
    --Hier soll die Variable sCat als Feldname der gefetchten Zeile verwendet werden, also ungefähr so:
    RAISE NOTICE '%',aRow.sCat;
--Klar, dass das nicht funktioniert. Irgendeine Idee, wie ich sowas realisieren kann?
  END LOOP;
CLOSE aCursor;
END;
$$

Danke schonmal im Voraus

Erzeuge Strings, die Deine SQL-Befehle enthalten, und rufe dann EXECUTE mit dem String auf.

Andreas

Du könntest die Spaltennamen aus dem information_schema oder den pg_* Tabellen auslesen und den Query damit zusammenbauen. Aber das dürfte sehr sehr langsam werden.

Ungefähr 2001 stand ich vor dem gleichen Problem und habe das dann in C gelöst:

PgFoundry: Table Audit: Project Info
Log Table Changes in PostgreSQL with tablelog - ads’ corner

Danke für die Infos. Mal sehen, wie ich da weiter vorgehe. Jedenfalls sehe ich Licht am Ende des Tunnels…