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 :

Appelle à un synonym de type package


Sujet :

Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Décembre 2005
    Messages
    76
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 76
    Par défaut Appelle à un synonym de type package
    Bonjour à tous,

    Je viens de crée un synonym pour un package logé dans schéma 1, pour être précis ce package contient une procédure qui fait appelle à une autre procédure qui n'appartient pas à ce package.
    J’ai donnée les droit d'exécution et de débogage pour tout les users, mais lors de l'exécution il me renvoie un message d'erreur

    Détail:
    Script de création:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    connect user1/pass@server
    create or replace public synonym cmdd for user1.cmdd;
    Grant EXECUTE,DEBUG on cmdd to public;
    commit;
     
    Synonyme créé.
     
     
    Autorisation de privilèges (GRANT) acceptée.
     
     
    Validation effectuée.
    à l'appel du package à partir d'un autre user :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    connect user2/pass@server;
    execute cmdd.pro('dir');
     
          *
    ERREUR Ó la ligne 1 :
    ORA-06550: Ligne 1, colonne 7 :
    PLS-00201: l'identificateur 'CMDD.PRO' doit Ûtre dÚclarÚ
    ORA-06550: Ligne 1, colonne 7 :
    PL/SQL: Statement ignored
    malgré que le user2 reconnaît bien le synonym:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    desc cmdd;
     
    PROCEDURE PRO
     Nom d'argument                  Type                    E/S par dÚfaut ?
     ------------------------------ ----------------------- ------ --------
     COMD                           VARCHAR2                IN

    Merci pour votre aide.

  2. #2
    Membre expérimenté Avatar de Loyd1974
    Profil pro
    Inscrit en
    Août 2007
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 176
    Par défaut
    Apparemment, cela a l'air correct.
    Est ce que ta procédure est bien déclaré dans la partie spécification de ton package ?

  3. #3
    Membre confirmé
    Inscrit en
    Décembre 2005
    Messages
    76
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 76
    Par défaut
    script de création :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    CREATE OR REPLACE PACKAGE cmdd
    as
       procedure pro(comd in varchar2);
    end cmdd;
    /
    create or replace package body cmdd
    as
    procedure pro(comd in varchar2)
    is
    begin
    Host_Command(p_command => comd);
    end;
    end cmdd;
    /
    Merci.

  4. #4
    Membre confirmé
    Inscrit en
    Décembre 2005
    Messages
    76
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 76
    Par défaut
    Suite au message d erreur:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    PLS-00201: l'identificateur 'CMDD.PRO' doit Ûtre dÚclarÚ
    J’ai pensée qu'il fallait droper le package et son synonym puis crée la procédure "PRO" en clair, et à la fin je rajoute la création du synonym "PRO" et les privilèges associés

    Script :

    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
    28
    29
    30
    31
    32
    connect user1/pass@server
    drop public synonym cmdd;
    drop PACKAGE cmdd;
    /
    create or replace procedure PRO(comd in varchar2)
    is
    begin
    Host_Command(p_command => comd);
    end;
    /
    create or replace public synonym PRO for user1.PRO;
    Grant EXECUTE,DEBUG on PRO to public;
    /
    commit;
     
    Synonyme supprimé.
     
    Package supprimé.
     
    Procédure créée.
     
     
    Synonyme créé.
     
     
    Autorisation de privilèges (GRANT) acceptée.
     
     
    Autorisation de privilèges (GRANT) acceptée.
     
     
    Validation effectuée.
    À l'appel de la procédure avec le user2:

    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
    connect user2/pass@server;
    execute PRO('dir');
     
    Process out : Le volume dans le lecteur F s'appelle DATA
    Process out : Le numÚro de sÚrie du volume est 2059-7CFD
    Process out :
    Process out : RÚpertoire de F:\oracle\ora92\DATABASE
    Process out :
    Process out :06/08/2007  09:26     <REP>          .
    Process out :06/08/2007  09:26     <REP>          ..
    Process out :02/01/2007  15:42     <REP>          archive
    Process out :02/08/2007  15:41              1á044 inittest.ora
    Process out :20/11/2006  11:49             31á744 oradba.exe
    Process out :12/09/2007  10:18             20á361 OraDim.Log
    Process out :12/09/2007  10:16             84á972 paradCORE.LOG
    Process out :10/09/2007  09:24              1á536 PWDPARAD.ora
    Process out :05/08/2007  14:07          1á613á824 SNCFPARAD.ORA
    Process out :02/08/2007  13:54              3á584 SPFILEPARAD.ORA
    Process out :02/01/2007  15:46              2á560 SPFILEPARADISE.ORA
    Process out :12/09/2007  10:18            360á975 sqlnet.log
    Process out :               9 fichier(s)        2á120á600 octets
    Process out :               3 RÚp(s)  16á363á831á296 octets libres
     
    ProcÚdure PL/SQL terminÚe avec succÞs.
    Donc en utilisons une procédure ça à marché mais reste toujours le point en suspont, pour quoi ça n'a pas marché avec un package ??

    Toujours utile que je peut me contenté d'une procédure.

    Merci.

Discussions similaires

  1. [DOM] Faire appel aux éléments de type input
    Par sliderman dans le forum Général JavaScript
    Réponses: 12
    Dernier message: 19/05/2008, 22h18
  2. Réponses: 3
    Dernier message: 19/03/2008, 22h11
  3. Appeler une fonction du type CreateFcn
    Par cococococococo dans le forum Interfaces Graphiques
    Réponses: 2
    Dernier message: 22/06/2007, 04h22
  4. [Ada 95] Généricité de type/package
    Par kindool dans le forum Ada
    Réponses: 5
    Dernier message: 19/05/2005, 11h54
  5. Comment appeller un ActiveX de type Exe en JAVASCRIPT ?
    Par mandarindi dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 23/03/2005, 09h57

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