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

Oracle Discussion :

problème d'écriture dans un fichier


Sujet :

Oracle

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 5
    Points : 2
    Points
    2
    Par défaut problème d'écriture dans un fichier
    Je veux écrire les infos d'une base de données dans un fichier .txt. Le fichier ne veut pas se fermer et rien ne s'écrit dedans alors que l'écriture ne renvoie aucune erreur. Voici le bout de code PL/SQL :


    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
    BEGIN         
            nom_fic        := 'CatComptable.txt';          
            fichier_sortie := UTL_FILE.FOPEN(wa_repertoire,nom_fic,'W',32767);         
    EXCEPTION          
    WHEN OTHERS THEN            
            DBMS_OUTPUT.PUT_LINE('CatComptable 1:'||SQLERRM);       
    END;              
    FOR enr_CatComptable IN cur_CatComptable 
    LOOP          
            wa_ligne := enr_CatComptable.cletbl||';'||enr_CatComptable.lib1;          
            DBMS_OUTPUT.PUT_LINE(wa_ligne);          
    BEGIN           
            UTL_FILE.PUT_LINE(fichier_sortie, wa_ligne);          
    EXCEPTION            
    WHEN OTHERS THEN              
            DBMS_OUTPUT.PUT_LINE('CatComptable 2'||SQLERRM);          
    END;       
    END LOOP;                     
    BEGIN           
            UTL_FILE.FCLOSE(fichier_sortie);       
    EXCEPTION          
    WHEN OTHERS THEN            
            DBMS_OUTPUT.PUT_LINE('CatComptable 3'||SQLERRM);       
    END;
    Et voici la réponse (les 4 premières lignes sont les résultats de la base):
    A;Assujetti à la TVA sur Débit
    D;Assujetti TVA Débit DOM-TOM
    J;TVA intra-com. - VENTE
    X;Exonéré Export
    CatComptable 3ORA-29285: erreur d'écriture sur le fichier


    Merci d'avance

  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
    Points : 3 609
    Points
    3 609
    Par défaut
    Bonjour et bienvenu sur le forum

    Merci de commencer par lire les règles et de préciser la version d'Oracle et d'utiliser les balises code pour plus de lisibilité.

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

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 075
    Points
    19 075
    Par défaut
    j'ai ajouté les balises

    pour info : http://www.sqlinform.com/

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

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 075
    Points
    19 075
    Par défaut
    essaye de remplacer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UTL_FILE.FOPEN(wa_repertoire,nom_fic,'W',32767)
    par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UTL_FILE.FOPEN(wa_repertoire,nom_fic,'W')

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Ca ne change rien. Le nombre 32767 est le nombre maximal de caratères sur une ligne. C'est fixé par Oracle. J'ai la version Oracle 10g.

  6. #6
    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
    Points : 3 609
    Points
    3 609
    Par défaut
    1. Qu'as-tu dans wa_repertoire ?
    2. As-tu créé ce directory avec les droits nécessaires ?
    3. Le répertoire correspondant au directory existe-t-il sur ton serveur de base de données ?
    4. Le fichier est-il créé dans ce répertoire ?

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    238
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2002
    Messages : 238
    Points : 125
    Points
    125
    Par défaut
    moi je propose d'essayer ceci :

    -1- Tester si le fichier est bien ouvert avec

    --> sys.utl_file.is_open(nomfic)

    pour être certain qu'il est bien ouvert

    et/ou -2- Ajouter ceci dans la partie qui ouvre le fichier

    fic:=utl_file.fopen(file_path,file_name,open_mode);
    Exception
    When sys.utl_file.invalid_path then dbms_output.put_line('ERR_001 : The file location or name was invalid');
    dbms_output.put_line('- Location : '||file_path);
    dbms_output.put_line('- Name : '||file_name);
    When sys.utl_file.invalid_mode then dbms_output.put_line('ERR_002 : The open_mode string was invalid');
    When sys.utl_file.invalid_operation then dbms_output.put_line('ERR_003 : The file could not be opened or operated on as requested');
    -- si ERR_01 : le parametre "UTL_FILE_DIR = *"
    n'existe probablement pas dans INIT.ORA
    -- si ERR_03 : Pas assez de droits ( +X ou +W ) sur le repertoire.

  8. #8
    Membre expert
    Avatar de bouyao
    Inscrit en
    Janvier 2005
    Messages
    1 778
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 778
    Points : 3 033
    Points
    3 033
    Par défaut
    D'après
    Citation Envoyé par plaineR
    1. Qu'as-tu dans wa_repertoire ?
    2. Ce répertoire existe-t-il sur ton serveur de base de données ?
    3. Le fichier est-il créé dans ce répertoire ?
    la variable wa_repertoire n'est pas informé.

  9. #9
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par plaineR
    1. Qu'as-tu dans wa_repertoire ?
    2. As-tu créé ce directory avec les droits nécessaires ?
    3. Le répertoire correspondant au directory existe-t-il sur ton serveur de base de données ?
    4. Le fichier est-il créé dans ce répertoire ?
    Le répertoire est bon, il existe bien car ça a fonctionné avant. Le fichier est créé mais il est vide.

    J'ai déjà testé s'il était ouvert : il est bien ouvert.

  10. #10
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par lediz
    moi je propose d'essayer ceci :

    -1- Tester si le fichier est bien ouvert avec

    --> sys.utl_file.is_open(nomfic)

    pour être certain qu'il est bien ouvert

    et/ou -2- Ajouter ceci dans la partie qui ouvre le fichier

    fic:=utl_file.fopen(file_path,file_name,open_mode);
    Exception
    When sys.utl_file.invalid_path then dbms_output.put_line('ERR_001 : The file location or name was invalid');
    dbms_output.put_line('- Location : '||file_path);
    dbms_output.put_line('- Name : '||file_name);
    When sys.utl_file.invalid_mode then dbms_output.put_line('ERR_002 : The open_mode string was invalid');
    When sys.utl_file.invalid_operation then dbms_output.put_line('ERR_003 : The file could not be opened or operated on as requested');
    -- si ERR_01 : le parametre "UTL_FILE_DIR = *"
    n'existe probablement pas dans INIT.ORA
    -- si ERR_03 : Pas assez de droits ( +X ou +W ) sur le repertoire.
    J'ai essayé mais ça n'a rien changé car ce n'est pas l'ouverture du fichier qui pose problème.

  11. #11
    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
    Points : 3 609
    Points
    3 609
    Par défaut
    Tu travailles avec des directories ou avec le paramètres UTL_FILE_DIR ?
    C'est ce même script qui fonctionnait avant ?
    => dans ce cas il faut charcher ce qui a changé entre avant et maintenant (droit sur le répertoire, disque plein par exemple)

  12. #12
    Membre expert
    Avatar de bouyao
    Inscrit en
    Janvier 2005
    Messages
    1 778
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 778
    Points : 3 033
    Points
    3 033
    Par défaut
    1. On 'a pas la version OS ?
    2. vérifie que ton fichier CatComptable.txt n'est pas ouvert par un editeur ou autre chose.
    3. Essaye ta procedure en supprimant le fichier CatComptable.txt ou mieu d'utiliser un autre nom de fichier.
    4. tu a essayé la commande CREATE DIRECTORY ?

  13. #13
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    J'ai résolu mon problème. C'était un problème de place. Le disque était plein.

    Merci pour votre aide.

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

Discussions similaires

  1. Problème d'écriture dans un fichier
    Par nicolemans72 dans le forum Entrée/Sortie
    Réponses: 11
    Dernier message: 30/01/2007, 16h47
  2. [FTP] problème d'écriture dans un fichier
    Par oops! dans le forum Langage
    Réponses: 14
    Dernier message: 08/08/2006, 16h52
  3. problème d'écriture dans un fichier
    Par seurjer dans le forum Langage
    Réponses: 8
    Dernier message: 01/06/2006, 09h15
  4. [PERL] Problème lecture/écriture dans un fichier
    Par LE NEINDRE dans le forum Langage
    Réponses: 4
    Dernier message: 17/08/2005, 13h15
  5. Problème d'écriture dans un fichier xml
    Par vanoou dans le forum C++Builder
    Réponses: 1
    Dernier message: 13/07/2005, 02h28

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