PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

For-Schleife mit dynamischem Tabellennamen in Postgresql 9.1?

Sie können niemals eine Variable als Tabellen- oder Spaltenbezeichner in plpgsql Embedded SQL verwenden. Eine Lösung sind dynamische SQL - EXECUTE- oder FOR IN EXECUTE-Anweisungen:

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; $$