Précédent   Forum des professionnels en informatique > Bases de données > Oracle
Oracle Forum Oracle : le serveur, les outils, ... Voir F.A.Q Oracle Tutoriels Oracle
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 12/09/2007, 14h38   #1
Membre du Club
 
Inscription : décembre 2005
Messages : 76
Détails du profil
Informations forums :
Inscription : décembre 2005
Messages : 76
Points : 42
Points : 42
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 :
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 :
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 :
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.
sofiane1111 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/09/2007, 14h57   #2
Membre actif
 
Avatar de Loyd1974
 
Inscription : août 2007
Messages : 176
Détails du profil
Informations forums :
Inscription : août 2007
Messages : 176
Points : 172
Points : 172
Apparemment, cela a l'air correct.
Est ce que ta procédure est bien déclaré dans la partie spécification de ton package ?
Loyd1974 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/09/2007, 15h02   #3
Membre du Club
 
Inscription : décembre 2005
Messages : 76
Détails du profil
Informations forums :
Inscription : décembre 2005
Messages : 76
Points : 42
Points : 42
script de création :

Code :
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.
sofiane1111 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/09/2007, 16h27   #4
Membre du Club
 
Inscription : décembre 2005
Messages : 76
Détails du profil
Informations forums :
Inscription : décembre 2005
Messages : 76
Points : 42
Points : 42
Suite au message d erreur:

Code :
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 :
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 :
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.
sofiane1111 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 05h16.


 
 
 
 
Partenaires

Hébergement Web