L'exception PLS-00201 me semble un peu inhabituelle pour le problème des "privilèges accordés via un rôle non disponible dans une procédure stockée". Comme Steve Broberg et KHB ont déjà souligné, d'accorder des privilèges directement à un utilisateur résoudra exception
ORA-00942: table or view does not exist.
(C'est l'exception que je vois normalement lors de la compilation d'une procédure stockée, lorsque l'instruction fonctionne en dehors de la procédure stockée, et i trouver que les privilèges sont accordés par des rôles.)
Quel est le genre de particulier est que l'exception que vous voyez est un PLS-00201 ( qui m'a intrigué.)
Une autre solution à l'ORA-942 question « aucun privilège par le biais de rôles » est de définir la procédure avec les droits de invocateur et utiliser SQL dynamique:
create procedure foo authid current_user
is
ln_cnt number;
begin
execute immediate 'select cnt(1) from schema.view' into ln_cnt;
end;
/
Je ne pense pas que ce soit la meilleure approche (il a son propre problèmes), mais c'est une solution de contournement.
http://download.oracle.com/docs/cd/B28359_01/appdev.111/b28370/dynamic.htm
Merci pour votre réponse rapide. – Sam