Funktion zum Durchlaufen und Auswählen von Daten aus mehreren Tabellen

Ich bin neu bei Postgres und habe eine Datenbank mit mehreren Tabellen derselben Struktur. Ich muss Daten aus jeder Tabelle auswählen, die bestimmten Kriterien entsprechen.

Ich könnte das mit ein paar machenUNION Abfragen, aber die Anzahl der zu durchsuchenden Tabellen kann sich im Laufe der Zeit ändern, sodass ich sie nicht so hart codieren möchte. Ich habe versucht, eine Funktion zu entwickeln, die bestimmte Tabellen durchläuft (sie haben eine gemeinsame Namenskonvention) und eine Datensatztabelle zurückgibt, aber ich erhalte keine Ergebnisse, wenn ich die Funktion abfrage. Funktionscode ist unten:

CREATE OR REPLACE FUNCTION public.internalid_formaltable_name_lookup()
  RETURNS TABLE(natural_id text, name text, natural_id_numeric text) AS
$BODY$
DECLARE
    formal_table text;
begin
  FOR formal_table IN
    select table_name from information_schema.tables
    where table_schema = 'public' and table_name like 'formaltable%'
  LOOP
    EXECUTE 'SELECT natural_id, name, natural_id_numeric
             FROM ' || formal_table || 
           ' WHERE natural_id_numeric IN (
                select natural_id_numeric from internal_idlookup
                where internal_id = ''7166571'')';
    RETURN NEXT;
 END LOOP;
 Return;
END;
$BODY$
  LANGUAGE plpgsql;

Beim Versuch, die Funktion zu verwenden, werden keine Fehler angezeigt, es werden jedoch keine Zeilen zurückgegeben:

SELECT * From internalid_formaltable_name_lookup();

Irgendeine Idee, wo ich falsch gelaufen bin?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage