Generate statements with SQL and use isql to execute
Examples:
-- execute arbitrary procedure without EXECUTE STATEMENT
SET HEADING OFF;
OUT tmp.sql;
select 'EXECUTE PROCEDURE '||proc_name||';' from your_table;
OUT;
INPUT tmp.sql;
COMMIT;
-- grant on all tables to some_user
SET HEADING OFF;
OUT tmp.sql;
select 'GRANT ALL ON '||rdb$relation_name||' TO some_user;'
from rdb$relations
where rdb$system_flag is null or rdb$system_flag = 0;
OUT;
INPUT tmp.sql;
COMMIT;
To grant to all procedures, use a similar approach, just query the RDB$PROCEDURES system table.
Of course, newer Firebird versions have EXECUTE STATEMENT which is more elegant way.