, the concept of invoker's rights was introduced.
As the name implies, invoker's rights allow a stored procedure to be executed with the current rights allocated to the user who is calling, or invoking, the stored procedure.
This makes privileges
, where they are assigned at runtime, rather than early-bound
where they are assigned when a stored procedure is created or modified.
Because invoker's rights apply to the current set of privileges of the calling user, you can use roles with stored procedures compiled with invoker's rights specified. Privileges allowed by roles can also be used for the stored procedure.
For more information on invoker's rights, please refer to the documentation for Oracle13c.