Función para recorrer y seleccionar datos de múltiples tablas

Soy nuevo en Postgres y tengo una base de datos con varias tablas de la misma estructura. Necesito seleccionar datos de cada tabla que coincidan con ciertos criterios.

Podría hacer esto con un montón deUNION consultas, pero el número de tablas que necesito buscar puede cambiar con el tiempo, por lo que no quiero codificarlo así. He estado tratando de desarrollar una función que recorra tablas específicas (tienen una convención de nomenclatura común) y devuelve una tabla de registros, pero no obtengo ningún resultado cuando consulto la función. El código de función está abajo:

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;

No obtengo ningún error cuando intento usar la función, pero no devuelve ninguna fila:

SELECT * From internalid_formaltable_name_lookup();

¿Alguna idea de dónde me equivoqué?

Respuestas a la pregunta(1)

Su respuesta a la pregunta