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] 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
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 6
    Par défaut [Oracle 10g] Lecture d'un fichier en PL/SQL
    Bonjour à tous,

    J'essaie actuellement sans succès d'écrire une procédure permettant de lire un fichier (alert_orcl.log pour être précis) avec des commandes PL/SQL.
    J'ai trouvé le package UTL_FILE qui semblerait convenir, seulement, quand je m'en sers dans une procédure sous SQL*Plus, j'ai toujours l'erreur : "Procédure créée avec des erreurs de compilation".

    Actuellement, j'ai essayé le code 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
    SET SERVEROUTPUT ON
     
    CREATE DIRECTORY FICHIERS_IN AS 'C:\scripts';
    GRANT READ ON DIRECTORY FICHIERS_IN TO PUBLIC;
     
    CREATE OR REPLACE PROCEDURE fic_ouv (nom_rep VARCHAR2, nom_fic VARCHAR2)
    IS
    ligne_fic VARCHAR2(200);
    contenu_fic utl_file.file_type;
    BEGIN
    contenu_fic := UTL_FILE.FOPEN(nom_rep, nom_fic, 'r');
    LOOP
    BEGIN
    UTL_FILE.GET_LINE(contenu_fic, ligne_fic);
    DBMS_OUTPUT.PUT_LINE(ligne_fic);
    EXCEPTION
    WHEN NO_DATA_FOUND THEN
    UTL_FILE.CLOSE(contenu_fic);
    EXIT;
    END;
    END LOOP;
    END;
    /
     
    EXECUTE fic_ouv ('FICHIERS_IN', 'test.txt');
    /
    Quelqu'un pourrait-il m'éclairer ?

  2. #2
    Membre Expert

    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Janvier 2004
    Messages
    2 862
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 862
    Par défaut
    Pour voir le détail de l'erreur fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    show err procedure fic_ouv
    Je pense qu'après tu dois pouvoir t'en sortir tout seul

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 6
    Par défaut
    Dans ce cas, il m'affiche l'erreur suivante sur les lignes 4 et 6 (quand je déclare et définis contenu_fic) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    PL/SQL: Item ignored
    PLS-00201: l'identificateur 'UTL_FILE' doit être déclaré
    Et du coup, j'ai des erreurs à chaque fois que j'utilise contenu_fic.

    Après recherche sur cette erreur, j'ai trouvé la discussion suivante :
    http://www.developpez.net/forums/sho...d.php?t=128275

    Cependant, la ligne de pifor me retourne l'erreur suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ORA-00942: Table ou vue inexistante
    Je ne comprends pas, étant donné que UTL_FILE est un package et non une table ou une vue.

    Une autre discussion me paraît intéressante :
    http://www.developpez.net/forums/arc.../t-154462.html

    Est-ce vrai que le package UTL_FILE n'existe pas sous Oracle 10gXE ? Existe-t-il un moyen de l'ajouter ?

    En vous remerciant une nouvelle fois,

    Sebvita

  4. #4
    McM
    McM est déconnecté
    Expert confirmé

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Billets dans le blog
    4
    Par défaut
    Tu ne dois pas avoir les droits sur UTL_FILE.
    Fais un grant connecté en sys.


    PS : c'est FCLOSE et pas CLOSE (ça t'évitera une erreur de plus)

  5. #5
    Membre Expert Avatar de Garuda
    Homme Profil pro
    Chef de projet / Urbaniste SI
    Inscrit en
    Juin 2007
    Messages
    1 285
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet / Urbaniste SI
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 285
    Par défaut
    En 1OG, tu dois avoir un DIRECTORY (le paramètre UTL_FILE_DIR est obsolète dans cette version)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    BEGIN
    contenu_fic := UTL_FILE.FOPEN('FICHIERS', nom_fic, 'r');
    LOOP
    BEGIN
    ou FICHIERS est un DIRECTORY

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 6
    Par défaut
    Merci pour vos réponses. J'ai actuellement installé la version 10gRC2 d'Oracle et j'ai corrigé les petites erreurs que vous m'aviez donné. Merci plaineR, j'avais complètement zappé cette commande pour voir les erreurs.

    Maintenant, j'ai les droits et tout ça pour UTL_FILE mais il subsiste un problème, qui risque de vous parraître tout simple je parie...

    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
    SET SERVEROUTPUT ON
     
    CREATE DIRECTORY FICHIERS_IN AS 'C:\scripts';
    GRANT READ ON DIRECTORY FICHIERS_IN TO PUBLIC;
    /
     
    CREATE OR REPLACE PROCEDURE	fic_ouv (nom_rep VARCHAR2, nom_fic VARCHAR2)
    IS
    ligne_fic VARCHAR2(32767);
    contenu_fic UTL_FILE.file_type;
    BEGIN
    contenu_fic := UTL_FILE.FOPEN(nom_rep, nom_fic, 'r');
    LOOP
    BEGIN
    UTL_FILE.GET_LINE ('contenu_fic', 'ligne_fic', TRUE);
    DBMS_OUTPUT.PUT_LINE(ligne_fic);
    EXCEPTION
    WHEN NO_DATA_FOUND THEN
    UTL_FILE.FCLOSE(contenu_fic);
    EXIT;
    END;
    END LOOP;
    END;
    /
     
    EXECUTE fic_ouv ('FICHIERS_IN', 'test.txt');
    La procédure contient des erreurs à la ligne 9, lors de l'utilisation de GET_LINE, et est donc inutilisable. Voici ce que j'obtiens comme erreurs :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    LINE/COL  ERROR  
    9/1  PL/SQL: Statement ignored  
    9/1  PLS-00306: numéro ou types d'arguments erronés dans appel à 'GET_ LINE'  
    9/1  PLS-00306: numéro ou types d'arguments erronés dans appel à 'GET_ LINE'  
    9/35  PLS-00363: expression 'ligne_fic' ne peut être utilisée comme cib le d'affectation

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

Discussions similaires

  1. Oracle 10g - spool dans un fichier
    Par E.Dupre dans le forum SQL
    Réponses: 4
    Dernier message: 04/11/2010, 15h16
  2. Lecture/Edition de fichier en PL/SQL
    Par YavaDeus dans le forum PL/SQL
    Réponses: 4
    Dernier message: 21/10/2009, 13h45
  3. Oracle 10g: Ecrire dans un fichier
    Par mamid1706 dans le forum PL/SQL
    Réponses: 13
    Dernier message: 10/04/2009, 15h29
  4. [Oracle 10g] Pbs de format fichiers UTF8
    Par fguigui dans le forum Administration
    Réponses: 2
    Dernier message: 23/04/2007, 16h15
  5. Oracle 9i : Lecture d'un fichier
    Par fred_hte_savoie dans le forum Oracle
    Réponses: 1
    Dernier message: 29/11/2006, 15h24

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