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 :

Lecture d'un fichier en PL/SQL


Sujet :

PL/SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Août 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 7
    Par défaut Lecture d'un fichier en PL/SQL
    Bonjour,

    Malgré tous les posts que j'ai lu sur ce sujet, j'ai tout de même un souci quand je veux lire un fichier text.

    Voici mon code (trouvé dans ce forum) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    CREATE OR REPLACE DIRECTORY MON_REP as 'C:/SQL/';
    GRANT READ, WRITE ON DIRECTORY MON_REP TO PUBLIC ;
    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
    CREATE OR REPLACE procedure LIRE_FICHIER AS 
     
     
        --1er test
      f_file_id UTL_FILE.FILE_TYPE;
      v_file_location VARCHAR2(256) := 'MON_REP';
      v_line VARCHAR2(4000);
      BEGIN
     
      dbms_output.put_line(v_file_location);
      f_file_id := UTL_FILE.FOPEN(v_file_location,'numero1.txt','w');
      UTL_FILE.PUT_LINE(f_file_id,'Hello Wolrd -- Comment ca marche ?!');
      --UTL_FILE.FCLOSE (f_file_id);
     
      --f_file_id := UTL_FILE.FOPEN(v_file_location,'numero1.txt','r');
       --UTL_FILE.GET_LINE(f_file_id,v_line);
       --DBMS_OUTPUT.PUT_LINE(v_line);
       --UTL_FILE.FCLOSE (f_file_id);
     
       EXCEPTION
       WHEN OTHERS
       THEN
       dbms_output.put_line(SQLERRM);
       UTL_FILE.FCLOSE_ALL;
     
       END;
    Voici l'erreur généré quand je teste mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    MON_REP
    ORA-29283: opération non valide sur le fichier
    ORA-06512: à "SYS.UTL_FILE", ligne 449
    ORA-29283: opération non valide sur le fichier
    Merci d'avance pour votre aide

  2. #2
    Expert confirmé
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Par défaut
    Là en l'occurrence, il semblerait que vous vouliez écrire dans le fichier et pas lire. Peut-être le fichier est-il déjà locké ? Retirez le dernier slash de votre nom de directory et essayez avec un autre nom de fichier.
    Par sécurité, il est fortement conseillé de tester que le fichier est bien ouvert avant de tenter de lire/écrire dedans.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Août 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 7
    Par défaut
    oui excusez moi sur l'erreur d'interprétation de mon code. C'est bien une lecture d'un fichier text que je voulais parler. Désolé.

    voici le code corrigé ,en ayant pris en compte le "/" en moins dans le directory

    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
    CREATE OR REPLACE procedure LIRE_FICHIER AS 
     
     
        --1er test
      f_file_id UTL_FILE.FILE_TYPE;
      v_file_location VARCHAR2(256) := 'MON_REP';
      v_line VARCHAR2(4000);
      BEGIN
     
      dbms_output.put_line(v_file_location);
      f_file_id := UTL_FILE.FOPEN(v_file_location,'numero1.txt','r');
     
       --UTL_FILE.GET_LINE(f_file_id,v_line);
       --DBMS_OUTPUT.PUT_LINE(v_line);
       --UTL_FILE.FCLOSE (f_file_id);
     
       EXCEPTION
       WHEN OTHERS
       THEN
       dbms_output.put_line(SQLERRM);
       UTL_FILE.FCLOSE_ALL;
     
       END;
    le fichier text n'est pas lock. J'ai testé ma procédure en ayant ouvert le fichier text mais j'ai toujours la même erreur.

  4. #4
    Expert confirmé
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Par défaut
    Si vous n'arrivez pas à ouvrir le fichier, c'est que l'OS n'a pas les droits suffisants sur ce répertoire au niveau du user Oracle.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Août 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 7
    Par défaut
    c'est bien un souci de droit. Le fichier text est en local, alors que le serveur oracle est à distance.

    Ca devrait être le première chose à regarder, mais, des fois, on oublie.

    Merci pour votre aide.

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

Discussions similaires

  1. Lecture d'un fichier XML par PL/SQL sous oracle10g
    Par nejib salem dans le forum PL/SQL
    Réponses: 2
    Dernier message: 17/05/2011, 13h35
  2. Lecture d'un fichier en PL/SQL
    Par Guillaume_Caldera dans le forum PL/SQL
    Réponses: 2
    Dernier message: 05/11/2009, 18h17
  3. Lecture/Edition de fichier en PL/SQL
    Par YavaDeus dans le forum PL/SQL
    Réponses: 4
    Dernier message: 21/10/2009, 13h45
  4. lecture de fichier en pl\sql
    Par nabelou1 dans le forum PL/SQL
    Réponses: 15
    Dernier message: 09/05/2008, 14h52
  5. [Oracle 10g] Lecture d'un fichier en PL/SQL
    Par sebvita dans le forum PL/SQL
    Réponses: 7
    Dernier message: 07/08/2007, 17h05

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