IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Oracle Discussion :

[ORA-00942] DBA_TAB_PRIVS dans une fonction


Sujet :

Oracle

  1. #1
    yac
    yac est déconnecté
    Membre à l'essai
    Inscrit en
    Avril 2002
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 31
    Points : 17
    Points
    17
    Par défaut [ORA-00942] DBA_TAB_PRIVS dans une fonction
    bonjour,

    est ce que quelqu 'un pourrais me dire pourquoi j'ai toujours l'erreur ORA-00942 : table or view does not exist :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    CREATE OR REPLACE FUNCTION RLS_TEST
     (P_TABLE IN VARCHAR2
     )
     RETURN NUMBER
     
     IS
     
     CURSOR C_TABPRIVS(B_TABLE VARCHAR2 ,B_ROLE VARCHAR2) 
     IS
     SELECT GRANTEE  FROM DBA_TAB_PRIVS
     WHERE TABLE_NAME = B_TABLE
     AND GRANTEE = B_ROLE
     AND PRIVILEGE = 'SELECT'; 
     
     
     V_DUMMY NUMBER;
     
     BEGIN
          OPEN C_TABPRIVS ('TABLE_TEST', 'ROLE_TEST');
         FETCH C_TABPRIVS INTO V_DUMMY;
         IF C_TABPRIVS%FOUND THEN
          CLOSE C_TABPRIVS;
          RETURN (1);  ---TRUE TROUVE
         END IF;
         CLOSE C_TABPRIVS;
           RETURN (0);
     END;


    et pourtant si j'execute le select à part ca me retourne des rangées et ca semble connaitre la view dba_tab_privs.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT GRANTEE  FROM DBA_TAB_PRIVS
    j'utilise oracle 9207.

    merci pour votre aide

  2. #2
    Membre éclairé Avatar de plabrevo
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    548
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 548
    Points : 674
    Points
    674
    Par défaut
    Pour etre 'vus' depuis une procedure stockee, ton utilisateur doit acquerir les droits sur les objects de maniere directe, sans passer par un role.

    Cf le note Metalink Note:168168.1 pour plus d'information.

    Limitations of Privileges and Roles: Stored PL/SQL
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    Roles are disabled when stored procedures or packages are executed.

    A user executing a procedure or package can perform actions against objects
    (select a table, select a view, create a table, create a view, create a trigger).
    When the necessary privileges are granted to this user indirectly via a role,
    the result is ORA-00942 or ORA-01933 or ORA-01031 and ORA-06512 or PLS-00201 and
    ORA-06550.

    These actions are successfull when the necessary privileges are granted directly
    to the user.

    This means that the user executing the procedure or package should be granted
    the privileges nequired to perform the actions against objects directly.

    A user cannot acquire a privilege via a role if he needs that privilege when
    executing a stored procedure or function or package.
    If the user issues the same statements in SQL, it works as the user can use the
    privileges granted via a role.

  3. #3
    yac
    yac est déconnecté
    Membre à l'essai
    Inscrit en
    Avril 2002
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 31
    Points : 17
    Points
    17
    Par défaut [ORA-00942] DBA_TAB_PRIVS dans une fonction
    Ca marche merci pour ta precieuse information.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Recuperation de formulaire dans une fonction
    Par arsgunner dans le forum ASP
    Réponses: 5
    Dernier message: 23/06/2004, 15h04
  2. Transmission d'un objet crée dans une fonction
    Par EvilAngel dans le forum ASP
    Réponses: 2
    Dernier message: 10/05/2004, 20h19
  3. Utilisez MinimizeName() dans une fonction
    Par James_ dans le forum C++Builder
    Réponses: 7
    Dernier message: 07/05/2004, 18h05
  4. [Postgresql]Connecter à une autre base dans une fonction
    Par alex2205 dans le forum Requêtes
    Réponses: 2
    Dernier message: 05/05/2003, 11h30
  5. [Turbo Pascal] Allocation et désallocation de pointeurs dans une fonction
    Par neird dans le forum Turbo Pascal
    Réponses: 13
    Dernier message: 17/11/2002, 20h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo