Dans mon logiciel, au moment de l'exécution, je dois vérifier si l'utilisateur connecté a les privilèges sur certaines tables, sur 2 schémas différents. D'après ce que j'ai trouvé faire des recherches, je suis tombé sur ces 2 vues all_tab_privs_recd all_tab_privs Dois-je utiliser l'une de ces vues, ou existe-t-il une autre meilleure façon de le faire? Merci
Je suis enfin venu avec cette requête que j'utilise uniquement si l'utilisateur connecté est différent du schéma que je souhaite vérifier les privilèges sur:
SELECT PRIVILEGE
FROM ALL_TAB_PRIVS_RECD
WHERE PRIVILEGE = 'SELECT'
AND TABLE_NAME = 'GN_VERSION'
AND OWNER = 'USER_A'
UNION ALL
SELECT PRIVILEGE
FROM SESSION_PRIVS
WHERE PRIVILEGE = 'SELECT ANY TABLE';
Ceci vérifie le privilège Select sur la table Gn_version sur le schéma User_a
ALL_TAB_PRIVS
est un superset de ALL_TAB_PRIVS_RECD
. Vous voulez probablement ALL_TAB_PRIVS
Comme il inclut des tables que l'utilisateur actuel possède.