Função para percorrer e selecionar dados de várias tabelas

Eu sou novo no Postgres e tenho um banco de dados com várias tabelas da mesma estrutura. Preciso selecionar dados de cada tabela que corresponda a determinados critérios.

Eu poderia fazer isso com um monte deUNION consultas, mas o número de tabelas que preciso pesquisar pode mudar ao longo do tempo, portanto, não quero codificá-lo dessa maneira. Eu tenho tentado desenvolver uma função que percorrerá tabelas específicas (elas possuem uma convenção de nomenclatura comum) e retornará uma tabela de registros, mas não estou obtendo nenhum resultado ao consultar a função. O código da função está abaixo:

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;

Não estou recebendo nenhum erro ao tentar usar a função, mas ela não está retornando nenhuma linha:

SELECT * From internalid_formaltable_name_lookup();

Alguma idéia de onde errei?

questionAnswers(1)

yourAnswerToTheQuestion