Gustavo:
Primero, asegúrate que existan los roles:
Despues, asegúrate que se han otorgado los permisos a los usuarios y a los roles:
Código SQL
[-]
select *
from rdb$user_privileges
En el "scrip" donde otorgo los permisos a usuarios y roles tengo la costumbre de siempre iniciar con la siguiente setencia:
Código SQL
[-]
delete from rdb$user_privileges where rdb$user = 'RHADMIN';
'RHADMIN' pueder ser un rol o un usuario, en este caso en particular es una role. Esto lo hago en vez de utilizar "revoke", para que asi evitar se quede con permisos a objetos a haya tenido con anterioridad.
Espero que esto te sirva de algo.
Saludos,
Gerardo Suárez Trejo
P.D. Por cierto, recuerda que también es posible otorgar permisos a procedimentos almacenados y a disparadores
La verdad que esto no lo sabia, y resulta ser de mucha utilidad.