Я хочу удалить роль из списка пользователей на основе оператора select. Мой оператор select работает нормально, но когда я пытаюсь реализовать оператор revoke, я получаю «отсутствующую или недействительную привилегию».
Я предполагаю, что что-то пропускаю команду для чтения списка пользователей, но не уверен, что нужно сделать, чтобы она прошла по списку.
REVOKE ORACLE_ROLE FROM (SELECT GRANTEE
FROM DBA_ROLE_PRIVS
JOIN SYS.DBA_USERS ON DBA_ROLE_PRIVS.GRANTEE = DBA_USERS.USERNAME
WHERE DBA_ROLE_PRIVS.GRANTED_ROLE = 'ROLE_1'
AND DBA_USERS.ACCOUNT_STATUS != 'OPEN'
AND EXISTS (SELECT * FROM DBA_ROLE_PRIVS WHERE GRANTED_ROLE != 'ROLE_1'));