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 :

Affichage de texte en SQL et PL/SQL


Sujet :

PL/SQL Oracle

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 31
    Points : 19
    Points
    19
    Par défaut Affichage de texte en SQL et PL/SQL
    Bonjour,

    Je souhaite effectuer un affichage de résultats de compteurs dans un fichier de log en sortie.

    L'idée est la suivante:

    Code sql : 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
    -- SAT_FEU
    -- Verifier le nombre d’enregistrements de la table SAT_FEU par rapport a la table SIG_RECO05
    DECLARE
      cpt1 number;
      cpt2 number;
      l_nomtab1 CPT_PURGE.NOMTABLE%TYPE:='SAT_FEU';
      l_nomtab2 CPT_PURGE.NOMTABLE%TYPE:='SIG_RECO05';
    BEGIN
      -- Action souhaitee: suppression du fichier-resultat des compteurs (si c'est possible en SQL)
      -- rescpt.log
     
      EXECUTE IMMEDIATE ('SELECT count(*) FROM ') || lnomtab1 INTO cpt1;
      EXECUTE IMMEDIATE ('SELECT count(*) FROM ') || lnomtab2 INTO cpt2;
     
      -- Action souhaitee: affichage dans le fichier rescpt.log des resultats retournes (fichier a recreer car supprime avant operation de nettoyage)
      -- DISPLAY ou equivalent en SQL de:
      -- "Compteur AVANT purge" & lnomtab1 & " = " & cpt1 >> rescpt.log
      -- "Compteur AVANT purge" & lnomtab2 & " = " & cpt2 >> rescpt.log
      -- Return
     
    END;
    /

    Mais je ne sais pas (et n'arrive pas à trouver) la syntaxe pour afficher de manière textuelle soit à l'écran ou soit dans un fichier de sortie (dans mon cas ce serait dans un fichier de log en sortie) les résultats retournés par les count(*).
    J'ai essayé de retranscrire de manière claire ce que je souhaite programmer (les commentaires dans le code).

    Merci pour votre aide.

    Cdlt,
    Olivier

  2. #2
    Membre éclairé Avatar de Z3phur
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2007
    Messages
    680
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2007
    Messages : 680
    Points : 807
    Points
    807
    Par défaut
    Bonjour,

    regarde du côté de dbms_utl_file et sinon pour la sortie sur ecran dbms_output.
    ==========================================
    La justice sans la force est impuissante, la force sans la justice est tyrannique...

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 31
    Points : 19
    Points
    19
    Par défaut
    Alors j'ai essayé avec les remarques de Z3phur.
    Ca donne ceci avec un essai d'écriture dans un fichier d'un texte sur 2 lignes :

    Code sql : 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
     
    -- Codes erreurs Oracle pour quitter le programme des la premiere erreur rencontree
    WHENEVER SQLERROR EXIT 61
    WHENEVER OSERROR  EXIT 62
     
    SET SERVEROUTPUT ON
     
    DECLARE
      file_handle UTL_FILE.FILE_TYPE;
      BEGIN
        file_handle := UTL_FILE.FOPEN('/data/13asr2/files/data/FICH/PURGE/SQL','Rescpt.log','w');
        DBMS_OUTPUT.PUT_LINE('Start essai');
        UTL_FILE.PUT_LINE(file_handle,'Bonjour chez Vous!');
        UTL_FILE.PUT_LINE(file_handle,'Nous sommes le ' || to_char(sysdate) || '.');
        UTL_FILE.FFLUSH(file_handle);
        UTL_FILE.FCLOSE(file_handle);
        DBMS_OUTPUT.PUT_LINE('Fin essai!');
      EXCEPTION
        WHEN NO_DATA_FOUND THEN
          DBMS_OUTPUT.PUT_LINE('No_data_found');
          UTL_FILE.FCLOSE(file_handle);
        WHEN UTL_FILE.INVALID_PATH THEN
          DBMS_OUTPUT.PUT_LINE('UTL_FILE.INVALID_PATH');
          UTL_FILE.FCLOSE(file_handle);
        WHEN UTL_FILE.READ_ERROR THEN
          DBMS_OUTPUT.PUT_LINE('UTL_FILE.READ_ERROR');
          UTL_FILE.FCLOSE(file_handle);
        WHEN UTL_FILE.WRITE_ERROR THEN
          DBMS_OUTPUT.PUT_LINE('UTL_FILE.WRITE_ERROR');
          UTL_FILE.FCLOSE(file_handle);
        WHEN OTHERS THEN
          DBMS_OUTPUT.PUT_LINE('Autres erreurs');
          UTL_FILE.FCLOSE(file_handle);
      END;
    /
     
    QUIT

    J'ai le message d'erreur suivant :

    --------------------------------------------------------
    UTL_FILE.INVALID_PATH

    PL/SQL procedure successfully completed.
    --------------------------------------------------------
    Mon chemin est invalide, mais la procédure semble quand même s'exécuter de façon 'successfully' et je ne trouve nulle part mon fichier 'Rescpt.log'.

    Si quelq'un a une idée, je suis preneur.

    Merci.

    Cdlt,
    Olivier

  4. #4
    Membre éclairé Avatar de Z3phur
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2007
    Messages
    680
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2007
    Messages : 680
    Points : 807
    Points
    807
    Par défaut
    Bonjour,

    regarde ce lien tu as la réponse à ton erreur :

    http://psoug.org/reference/utl_file.html
    ==========================================
    La justice sans la force est impuissante, la force sans la justice est tyrannique...

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 31
    Points : 19
    Points
    19
    Par défaut
    OK, merci pour le lien.

    Si je comprends, en tant qu'Oracle je n'ai pas le droit d'écrire dans le chemin que je précise dans le script, c'est bien ça ?

    Le hic, c'est que je n'évolue sur un poste en local, mais sur un serveur donc il faut que le fichier soit créé sur le serveur et là je ne suis pas maître des endroits où le déposer.

    Bonne soirée.

    Cdlt,
    Olivier

  6. #6
    Membre éclairé Avatar de Z3phur
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2007
    Messages
    680
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2007
    Messages : 680
    Points : 807
    Points
    807
    Par défaut
    Tu peux créer un directory oracle qui pointe ou tu veux et donner le droit d écriture et lecture pour ton user sur directory.

    Assure toi d avoir les bons droits au niveau système
    ==========================================
    La justice sans la force est impuissante, la force sans la justice est tyrannique...

Discussions similaires

  1. [MySQL] affichage d'un tableau à partir de requetes sql
    Par sebou07 dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 11/01/2012, 14h39
  2. Réponses: 0
    Dernier message: 11/02/2008, 11h37
  3. [SQL] [XML/PHP/SQL]exploiter au mieux un fichier text
    Par freija dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 26/07/2006, 11h38
  4. Réponses: 1
    Dernier message: 25/10/2005, 12h18
  5. Insertion d'un fichier texte dans une moulinette PL/SQL
    Par Douanier007 dans le forum PL/SQL
    Réponses: 3
    Dernier message: 24/01/2005, 16h08

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