2009-09-03 17 views
1

J'ai essayé sans succès d'ajouter une référence à un synonyme public dans un paquet ou une procédure stockée dans Oracle pendant un moment, et je me demande s'il y a des solutions à ce problème à court d'accéder aux tables directement. Par exemple:Oracle 10: Est-il possible d'accéder à un synonyme public à une table dans une procédure stockée ou un package?

CREATE OR REPLACE PROCEDURE test_func AS 
    test_int INTEGER;<br> 
BEGIN<br> 
    select count(*) INTO test_int FROM test_synonym; 
END; 
/

Je sais que cette procédure ne fait rien, mais ce n'est qu'un exemple. Où la table 'test_synonym' est en réalité un synonyme public d'une table dans un autre schéma. Je n'ai sélectionner des autorisations à cette table, mais en essayant de compiler cela me donne à plusieurs reprises l'erreur:

Error(5,38): PL/SQL: ORA-00942: table or view does not exist 

Merci pour votre temps.

Répondre

2

Est-ce que le schéma dans lequel vous créez la procédure ont directe SELECT privs (non via un rôle?)

Lorsque vous créez une procédure (fonction/package), les autorisations sur les tables doivent être directement accordé, non accordé via un rôle.

+0

J'ai parlé à l'administrateur de base de données, et nous avons donné à l'utilisateur des privilèges de sélection directe à la table sous-jacente dans l'autre schéma, mais je continue à obtenir des erreurs ORA-00942. – Horus

+0

En fait, j'avais fait un mod de code pour essayer de faire fonctionner ceci avant que je sois allé au DBA, et cela causait l'erreur, votre solution (vérifiez les privs sous-jacents, a semblé fonctionner. – Horus