PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Para loop com nome de tabela dinâmica no Postgresql 9.1?


Você não pode usar uma variável como identificador de tabela ou coluna no SQL embutido do plpgsql nunca. Uma solução é SQL dinâmica - instruções EXECUTE ou FOR IN EXECUTE:
DO $$
DECLARE
  tables text[] = ARRAY['table1','table2'];
  table_name text;
  rec record;
BEGIN
  FOREACH table_name IN ARRAY tables
  LOOP
    FOR r IN EXECUTE format('SELECT * FROM %I', table_name)
    LOOP
      RAISE NOTICE '%', rec;
    END LOOP; 
  END LOOP;
END; $$