Hace poco se vió en un hilo como buscar los nombres de las
tablas en Firebird.
Después puede usar Execute Statetement para crear la sql al vuelo con un string y ejecutarla, (sería mejor crear un Store Procedure
):
Código SQL
[-]
declare variable strSql varchar (80)
as
for select ....< es sql larga >
into :NombreTabla do
begin
strsql = 'grant select ' || :NombreTabla || ' to public';
execute statement strsql
end;