PLS-00201: identificateur UTIL_FILE doit être déclarée
Je suis en train d'exporter des données à partir d'une requête dans un fichier csv à partir d'Oracle Enterprise Express est installé sur un ordinateur Windows Server 2008.
J'ai trouvé cette solution:
http://asktom.oracle.com/pls/asktom/f?p=100:11:::::P11_QUESTION_ID:235814350980
qui a essentiellement écrit une fonction et utilise le UTIL_FILE objet à créer et écrire dans un fichier et ajouter des séparateurs.
Je reçois l'erreur de suivi quand j'ai essayer de créer la fonction dans Oracle SQL Developer:
PLS-00201: identifier UTIL_FILE must be declared.
Quand je lance la commande suivante:
select owner, object_type from all_objects where object_name = 'UTL_FILE'
Le résultat est:
OWNER Object Type
--------- -----------
PUBLIC SYNONYM
EDIT:
En cours d'exécution:
GRANT EXECUTE ON UTL_FILE TO PUBLIC
Donne:
Error starting at line 2 in command:
GRANT EXECUTE ON UTL_FILE TO PUBLIC
Error report:
SQL Error: ORA-00942: table or view does not exist
00942. 00000 - "table or view does not exist"
*Cause:
*Action:
Quel est le problème?
Connectez en tant que SYS utilisateur avec des privilèges SYSDBA a résolu le problème. J'ai été en mesure d'exécuter la SUBVENTION de commande sur mon utilisateur, puis j'ai eu les privilèges requis
OriginalL'auteur Kristy Welsh | 2013-11-20
Vous devez vous connecter pour publier un commentaire.
Semble que l'absence de privilèges pour moi. Souvent
PUBLIC
utilisateur aEXECUTE
privilège accordé sur le paquet, mais le privilège peut être révoquée.Vous pouvez vérifier si
PUBLIC
a ce privilège en exécutant la requête suivante:Si il n'ya pas de lignes retournées, essayez de l'octroi de l'exécution de privilège de l'utilisateur vous êtes connecté en tant que, ou de
PUBLIC
, comme certains utilisateurs privilégiés, par exempleSYS
:Modifier
Vous devez accorder le privilège tout en étant connecté en tant que, par exemple,
SYS
utilisateur.Êtes-vous connecté en tant que
SYS
utilisateur?non, je ne suis pas SYS utilisateur.
SÉLECTIONNEZ * à PARTIR de all_tab_privs OÙ bénéficiaire = "PUBLIC" ET table_name = 'UTL_FILE donne pas de documents.
Vous devez accorder ce privilège comme un
SYS
de l'utilisateur, ou d'un autre utilisateur avec suffisamment de privilèges. Si la base de données est gérée par quelqu'un d'autre, demandez à l'administrateur d'accorder ce privilège àPUBLIC
. Si vous avez accès àSYS
compte, connectez-vous en tant queSYS
et la commande d'octroyer le privilège d'PUBLIC
.OriginalL'auteur Przemyslaw Kruglej
Outre le possible manque d'autorisations que d'autres réponses ont couvert, à votre question, dit l'erreur que vous obtenez est:
Qui suggère que vous avez référencé
UTIL_FILE
, plutôt que dans le haut-paquetUTL_FILE
, dans votre fonction. Il pourrait être une erreur que vous avez introduit l'écriture de la question, bien sûr, mais vous l'avez utilisé dans le texte est trop alors peut-être que vous avez obtenu le nom du package incorrect dans votre code, si vous n'avez pas juste un copier-coller de Tom du code.Vous aurez toujours besoin d'exécuter des privilèges sur
UTL_FILE
de toute façon, si vous ne les avez pas déjà.OriginalL'auteur Alex Poole
Les utilisateurs n'ont pas la permission d'exécution UTL_FILE par défaut. Pour utiliser UTL_FILE, un utilisateur ADMINISTRATEUR de l'instance ou de l'administrateur doit ACCORDER explicitement la permission d'EXÉCUTION, comme dans l'exemple suivant:
OriginalL'auteur Alen Oblak
En tant qu'utilisateur: h_djebli l'a souligné dans son commentaire vous devez être connecté en tant que SYS utilisateur en premier lieu.
Pour ce faire, vous devez être dans votre répertoire de base oracle :
Puis exécuter :
sqlplus va commencer dans votre terminal et vous serez connecté en tant qu'utilisateur SYS.
Vous pouvez écrire la SUBVENTION de commande dans votre sqlplus console :
OriginalL'auteur guillaume guerin
On peut le faire via cmd, avec ces étapes:
sysdba
(connect sys as sysdba
+ entrez le mot de passe que sys_password)grant execute on utl_file to <user_name>
.'SELECT * FROM all_tab_privs WHERE grantee = 'PUBLIC' AND table_name = 'UTL_FILE';'
OriginalL'auteur kumar kislay