Для этого вам понадобится динамика c SQL.
do $$
declare
arrow record;
BEGIN
FOR arrow IN
SELECT table_name FROM information_schema.tables WHERE table_schema = 'public'
LOOP
execute format('GRANT SELECT ON %I TO test', arrow.table_name);
END LOOP;
END;
$$ LANGUAGE plpgsql;
Но вы можете сделать это намного проще без каких-либо циклов или PL / pg SQL:
grant select on all tables in schema public to test;