Fonction pour parcourir et sélectionner les données à partir de plusieurs tables

Je suis nouveau sur Postgres et avoir une base de données avec plusieurs tables de la même structure. J'ai besoin de sélectionner les données de chaque table qui correspond à certains critères.

Je pourrais le faire avec un tas de UNION requêtes, mais le nombre de tables j'ai besoin de recherche peut changer au fil du temps, donc je ne veux pas coder en dur comme ça. J'ai essayé de développer une fonction qui boucle par le biais de tables spécifiques (ils ont en commun une convention de nommage) et retourner un tableau d'enregistrements, mais je n'obtiens pas de résultats quand j'ai une requête à la fonction. La fonction de code est ci-dessous:

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;

Je n'obtiens pas les erreurs lorsque j'essaye d'utiliser la fonction, mais ce n'est pas de retourner toutes les lignes:

SELECT * From internalid_formaltable_name_lookup();

Aucune idée de l'endroit où je suis allé mal?

Ne pouvez-vous pas créer une table parent et à l'héritage des enfants de sorte que vous pouvez interroger un tableau si ceux-ci ont une structure similaire?
Aussi votre expression de "RETOUR PROCHAIN expr" est vide.

OriginalL'auteur user3813773 | 2014-07-07