Erreur de compilation PL/SQL

kazaki48 Messages postés 1 Statut Membre -  
 Yann -
Bonjour,

je travail avec oracle 10g, qd je veu lister les
tables qui appartiennent à l'ulisateur MOUTOUT, le
résultat est positif :

SQL> select table_name from dba_tables where owner ='MOUTOUT';

TABLE_NAME
------------------------------
TEST
BIN$xryPUKITQwCKgpeSJNS0iw==$0
DIR_LIST
TAB_LOAD_DATA_DETAIL
TAB_LOAD_FAIL_DETAIL
BIN$m5ebfVr7QPSf+46sOp9hTA==$0
6 ligne(s) sélectionnée(s).


mais quand j'utilise la même requette dans une
procedure, ya des erreurs de compilation :

SQL> CREATE or replace PROCEDURE MOUTOUT.proc1
2 as
3 begin
4 select table_name from dba_tables where owner ='MOUTOUT';
5 end;
6 /
Avertissement : Procédure créée avec erreurs de
compilation.


je visualise les erreurs (Table inexistante !!):

SQL> show errors
Erreurs pour PROCEDURE MOUTOUT.PROC1 :

LINE/COL ERROR
-------------------------------------------------------------------------
4/1 PL/SQL: SQL Statement ignored
4/24 PL/SQL: ORA-00942: Table ou vue inexistante

SVP quelqu'un peut il me dire la cause ?

Merci d'avance.

1 réponse

Yann
 
Tu as probablement les droits en lecture sur cette table, mais à travers un rôle qui t'a été attribué et qui en a le droit.
Mais lors de l'exécution du code PL/SQL, les droits possédés via un rôle sont inopérants. Il faut donc que le privilège t'ait été explicitement et nominativement attribué via un ordre GRANT SELECT ON latable TO leUser.

Ceci, je viens de remarquer une autre erreur dans ton code : un select sans une clause INTO...
3