Bạn không thể sử dụng một biến làm mã định danh bảng hoặc cột trong SQL nhúng plpgsql. Một giải pháp là câu lệnh SQL động - EXECUTE hoặc 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; $$