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 :

Déclaration UTL_File procédure


Sujet :

Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2005
    Messages : 74
    Par défaut Déclaration UTL_File procédure
    Bonjour à tous,

    Je suis en train d'écrire une procédure stockée qui doit écrire dans un fichier.

    Voilà mon code :
    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
     
    CREATE OR REPLACE PROCEDURE Extraction (Rq Varchar2, FileName Varchar2, TypeOuverture Varchar2) IS
     
    f_file UTL_FILE.FILE_TYPE;
    v_file_location VARCHAR2(256) := 'EXPORT';
     
    BEGIN
    DBMS_OUTPUT.PUT_LINE('lvglkhv'); 
     
    --ouverture du fichiers de sortie
    f_file := UTL_FILE.FOPEN(v_file_location, FileName, TypeOuverture, 4000);
    /*
    ...
    */
    UTL_FILE.UTL_FILE.FCLOSE (f_file);
    END;
    /
    Là oracle n'est pas content du tout, il me dit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    SQL>  @extraction
     
    Avertissement : Procédure créée avec erreurs de compilation.
     
    SQL> show err
    Erreurs pour PROCEDURE EXTRACTION :
     
    LINE/COL ERROR
    -------- ----------------------------------------------------
    13/1     PL/SQL: Statement ignored
    13/10    PLS-00302: Le composant 'UTL_FILE' doit être déclaré
    Je pense avoir bien déclaré mon fichier, surtout que je fais comme ça dans des blocs anonymes et que cela marche...

    Des idées?

    Amicalement,
    Stos

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2006
    Messages : 133
    Par défaut
    Je suggère tout d'abord de vérifier l'existance du package.

    Pour cela, Il suffit d'executer via SQLPLUS et sous le compte system la requête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     select status,object_type, owner,object_name from dba_objects where object_name='UTL_FILE';
    Si la requete ne renvoi pas : 1 pkg + 1 pkg_body + 1 public synonyme alors il faudra lancer le script :

    [FONT=Courier]{ORACLE_HOME}/rdbms/admin/utlfile.sql[/FONT]

  3. #3
    Membre expérimenté
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2006
    Messages : 133
    Par défaut
    La Procédure qui devrait marcher :

    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
    32
    33
    34
    35
    36
    37
     
     CREATE OR REPLACE PROCEDURE Extraction    (Rq Varchar2, FileName Varchar2, TypeOuverture Varchar2) is
     nom_fichier varchar2(100);
       fic_file utl_file.file_type;
    v_file_location VARCHAR2(256) := 'EXPORT';
    BEGIN
    DBMS_OUTPUT.PUT_LINE('lvglkhv'); 
    --ouverture du fichiers de sortie 
    fic_file:=utl_file.fopen(v_file_location, FileName,TypeOuverture);
    utl_file.put_line(fic_file,'DEBUT ');
    utl_file.new_line(fic_file);
    utl_file.put_line(fic_file,' FIN ');
    utl_file.new_line(fic_file);
    utl_file.fclose(fic_file);
        exception
      when no_data_found
       then dbms_output.put_line('no_data_found'||sqlerrm);
      when utl_file.invalid_operation
       then dbms_output.put_line('Impossible ecrire fichier : proteger en ecriture'||sqlerrm);
      when utl_file.internal_error
       then dbms_output.put_line('erreur interne'||sqlerrm);
      when utl_file.invalid_filehandle
       then dbms_output.put_line('invalid_filehandle '||sqlerrm);
             utl_file.fclose(fic_file);
      when utl_file.invalid_mode
       then dbms_output.put_line('invalid_mode'||sqlerrm);
      when utl_file.invalid_path
       then dbms_output.put_line('invalid_path :'||sqlerrm);
      when utl_file.read_error
       then dbms_output.put_line('read_error'||sqlerrm);
      when utl_file.write_error
       then dbms_output.put_line('write_error : '|| sqlerrm);
      when value_error
       then dbms_output.put_line('value_error'||sqlerrm);
      when others
       then dbms_output.put_line('Autre :'||sqlerrm);
     END;
    Penser à vérifier le paramètre utl_file_dir :

    [code]
    select name, value from v$parameter where name like '%utl_file%';
    [/cdoe]

  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
    UTL_FILE.UTL_FILE.FCLOSE (f_file);
    Rien ne vous choque ? même pas la répétition UTL_FILE.UTL_FILE ?

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2005
    Messages : 74
    Par défaut
    Rien ne vous choque ? même pas la répétition UTL_FILE.UTL_FILE ?
    Mais ou étaient mes yeux???

    Stos, ShameFull

    Merci

  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
    Par défaut
    Citation Envoyé par jlucch
    Penser à vérifier le paramètre utl_file_dir :
    Apparemment il travaille avec des directories, donc le paramètre utl_file_dir n'a aucune importance

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

Discussions similaires

  1. Déclaration de procédure avec un champ type SET
    Par laboreau_tony dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 21/12/2009, 04h09
  2. Réponses: 1
    Dernier message: 30/07/2007, 14h10
  3. Réponses: 8
    Dernier message: 05/03/2007, 15h56
  4. Réponses: 8
    Dernier message: 03/11/2006, 15h55
  5. Déclaration de procédures dans un main
    Par sangei dans le forum Langage
    Réponses: 8
    Dernier message: 09/11/2005, 15h13

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