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

PL/SQL Oracle Discussion :

Oracle 10g: Ecrire dans un fichier


Sujet :

PL/SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Étudiant
    Inscrit en
    Mars 2007
    Messages
    163
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2007
    Messages : 163
    Par défaut Oracle 10g: Ecrire dans un fichier
    Bonjour tout le monde. J'ai l'erreur:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ORA-20052: Invalid File Location
    En essayant d'écrire dans un fichier. Mon code est le suivant.

    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
     
    PROCEDURE FILEWRITE_TEXT( p_texte IN VARCHAR2, p_filepath IN VARCHAR2, p_fileName IN VARCHAR2) AS
    lf_file_id    UTL_FILE.FILE_TYPE;
     
    BEGIN 
      dbms_output.put_line(lsFilePath);
      lf_file_id := UTL_FILE.FOPEN(p_filepath, p_fileName, 'w');
      UTL_FILE.PUT_LINE(lf_file_id, p_texte);
      UTL_FILE.FCLOSE (lf_file_id);
      EXCEPTION
      WHEN utl_file.invalid_mode THEN
        RAISE_APPLICATION_ERROR (-20051, 'Invalid Mode Parameter');
      WHEN utl_file.invalid_path THEN
        RAISE_APPLICATION_ERROR (-20052, 'Invalid File Location');
      WHEN utl_file.invalid_filehandle THEN
        RAISE_APPLICATION_ERROR (-20053, 'Invalid Filehandle');
      WHEN utl_file.invalid_operation THEN
        RAISE_APPLICATION_ERROR (-20054, 'Invalid Operation');
      WHEN utl_file.read_error THEN
        RAISE_APPLICATION_ERROR (-20055, 'Read Error');
      WHEN utl_file.write_error THEN
        RAISE_APPLICATION_ERROR (-20056, 'Read Error');   
      WHEN utl_file.internal_error THEN
        RAISE_APPLICATION_ERROR (-20057, 'Internal Error');
      WHEN utl_file.charsetmismatch THEN
        RAISE_APPLICATION_ERROR (-20058, 'Opened With FOPEN_NCHAR But Later I/O Inconsistent');
      WHEN utl_file.invalid_maxlinesize THEN
        RAISE_APPLICATION_ERROR(-20060,'Line Size Exceeds 32K');
      WHEN others THEN
        RAISE_APPLICATION_ERROR (-20099, 'Unknown UTL_FILE Error');	
    END FILEWRITE_TEXT;
    La procédure stockée, je l'appelle avec les arguments suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
      P_FILEPATH := 'D:\MONREP\';
      P_FILENAME := 'MONFIC.TXT';
    Mon répertoire existe. Quant à mon fichier NON.

    L'erreur est provoquée par le FOPEN.

    Merci d'avance.

  2. #2
    Expert éminent
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    C'est pas le chemin mais la DIRECTORY correspondante qu'il faut passer en paramètre.

    http://download.oracle.com/docs/cd/B...e.htm#i1004619

  3. #3
    Membre confirmé
    Étudiant
    Inscrit en
    Mars 2007
    Messages
    163
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2007
    Messages : 163
    Par défaut
    Citation Envoyé par orafrance Voir le message
    C'est pas le chemin mais la DIRECTORY correspondante qu'il faut passer en paramètre.

    http://download.oracle.com/docs/cd/B...e.htm#i1004619
    Merci pour votre réponse.
    J'ai cru (dans un forum) lire que le répertoire peut être soit un directory ou un chemin... C'est pour cela que j'ai donné un chemin.

    Par ailleurs, j'ai créé un directory :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    SQL> create or replace directory monrep as 'D:\MONREP\';
     
    Répertoire créé.
     
    SQL> grant write,read on directory monep to mamid;
     
    Autorisation de privilèges (GRANT) acceptée.
    J'ai appelé ma fonction avec les paramètre suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    P_FILEPATH := 'MONREP';
    P_FILENAME := 'MONFIC.TXT';
    Mais j'ai toujours l'erreur.

  4. #4
    Expert éminent
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    le répertoire existe-t-il bien sur le serveur oracle ?

  5. #5
    Membre confirmé
    Étudiant
    Inscrit en
    Mars 2007
    Messages
    163
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2007
    Messages : 163
    Par défaut
    Citation Envoyé par orafrance Voir le message
    le répertoire existe-t-il bien sur le serveur oracle ?
    Oui.
    La base de donnée est en locale. Et j'ai bien mon répertoire.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    35
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations forums :
    Inscription : Avril 2006
    Messages : 35
    Par défaut
    Essaye voir d'ôter le \ à la fin

    CREATE OR REPLACE directory monrep AS 'D:\MONREP';

    Et là je sais pas s'il s'agit ou non que d'une erreur de frappe :

    grant write,read on directory monep to mamid;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    grant write,read on directory monrep to mamid;

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

Discussions similaires

  1. [Oracle 9i]PLSQL: Ecrire dans un fichier
    Par mamid1706 dans le forum PL/SQL
    Réponses: 6
    Dernier message: 16/03/2011, 18h17
  2. Oracle 10g - spool dans un fichier
    Par E.Dupre dans le forum SQL
    Réponses: 4
    Dernier message: 04/11/2010, 15h16
  3. Ecrire dans un fichier avec PL/SQL (oracle)
    Par Titouf dans le forum PL/SQL
    Réponses: 3
    Dernier message: 02/10/2005, 06h36
  4. Ecrire dans un fichier grace à un trigger ?
    Par zigoo dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 29/10/2004, 20h03
  5. Ecrire dans un fichier sans supprimer le reste
    Par koan_sabian dans le forum Linux
    Réponses: 4
    Dernier message: 20/02/2003, 15h44

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