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 :

[PL/SQL] Sortie dans un fichier de log dans une procedure


Sujet :

Oracle

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Décembre 2005
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 1
    Points : 1
    Points
    1
    Par défaut [PL/SQL] Sortie dans un fichier de log dans une procedure
    Bonjour,

    Je dois develloper un script sh qui accede a une base y effectue differente modification (apres des verifications) et affiche le resultat (ou les echec dans un fichier de log.
    Pour le moment les log qui apparaissent ne sont pas tout a fait ce que je souhaite:

    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
    set serveroutput on;
    sqlplus ROZE_DBA/ROZE_DBA@ROZNAT << EOF_SQL >> $FileLog
    set sqlprompt ""
    Declare
    nbFich integer;
    Begin
    SELECT count(*) into nbFich FROM FICH_CONT WHERE P_TRIG_SITE='PAL' AND TR_NO_TRAN='1' AND S_TRIG_SYS='RPE' AND FC_NO_REP_MAT='084' AND FC_SUFF_REP_MAT='34M7';
    If nbFich = 1 then
    	SELECT count(*) into nbFich FROM FICH_CONT WHERE P_TRIG_SITE='PAL' AND TR_NO_TRAN='1' AND S_TRIG_SYS='RPE' AND FC_NO_REP_MAT='084' AND FC_SUFF_REP_MAT='34M7' AND FC_SUPPRE_LOGI='N';
    	If nbFich = 0 then
    		dbms_output.put_line('coucou');
    		UPDATE FICH_CONT SET FC_SUPPRE_LOGI='N' WHERE P_TRIG_SITE='PAL' AND TR_NO_TRAN='1' AND S_TRIG_SYS='RPE' AND FC_NO_REP_MAT='084' AND FC_SUFF_REP_MAT='34M7' AND FC_SUPPRE_LOGI='O';
    		UPDATE ZONE SET Z_SUPPRE_LOGI='N', Z_DATE_SUPPRE='', Z_NO_REP_REMPLAC='' WHERE FC_ID_FICHE_CONT = 108855;
    	Else
    		dbms_output.put_line('La fiche n est pas supprimé logiquement on ne peut donc pas la réactiver');
    	End if;
    Else
    	dbms_output.put_line('Il n y a pas de fiche correspondant aux données saisies');
    End if;
    End ;
    /
    commit;
    /
    exit
    EOF_SQL
    Ce qui me donne le log 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
     
    Connecté à :
    Oracle8i Enterprise Edition Release 8.1.7.4.0 - Production
    JServer Release 8.1.7.4.0 - Production
     
    SQL>   2    3    4    5    6    7    8    9   10   11   12   13   14   15   16   17   18  La fiche n est pas supprimé logiquement on ne peut donc pas la réactiver
     
    Procédure PL/SQL terminée avec succès.
     
     
    Validation effectuée.
     
     
    Validation effectuée.
     
    Déconnecté de Oracle8i Enterprise Editi

    Comme vous vous en doutez la partie
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SQL>   2    3    4    5    6    7    8    9   10   11   12   13   14   15   16   17   18
    ne m'interresse pas et je souhaiterais ne pas la retrouver dans mes logs.

    Si qq'un a une idée je suis preneur

    D'avance merci
    Raph

  2. #2
    Membre expert
    Avatar de LeoAnderson
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 938
    Points : 3 199
    Points
    3 199
    Par défaut
    Si vous utilisez SQL*Plus, une première solution serait de jouer avec les
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SET ECHO ON/OFF
    SET FEEDBACK ON/OFF
    ...
    Une recherche sur le mot clé "feedback" vous ramènera plusieurs exemples intérêssants ! ;-)

  3. #3
    Membre confirmé
    Avatar de argoet
    Inscrit en
    Mai 2002
    Messages
    582
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 582
    Points : 562
    Points
    562
    Par défaut
    Un (exemple) little script (ksh) de Lancement d'un fichier SQL ou PL/SQL
    Le fichier (SQL/PL) est lancé en paramètre 1 ($1) comme argument de ce script
    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
     
    #!/bin/ksh
     
         #    dans /tmp/sql.$$
         #    on passe des directive d'execution a sqlplus
         #    on ajoute le fichier contenant l'ordre SELECT
         #    on ajoute un ordre exit
     
    SQL_FIC=/tmp/sql.$$            
     
    cat > $SQL_FIC << !
    set newpage 0;
    set linesize 500;
    set pagesize 0;
    set echo off;
    set feedback off;
    set heading off;
    set serveroutput on;
    Whenever SQLERROR EXIT FAILURE ROLLBACK;
    !
     
    cat $1 >> $SQL_FIC
     
    echo 'exit;' >> $SQL_FIC
     
    sqlplus -s ${Mon_User}/${Mon_Pwd} @$SQL_FIC         
    retour=$?
     
    #    detruit les fichiers de travail     
     
    if [ $retour -eq 0 ]
    then
       /bin/rm $SQL_FIC >/dev/null 2> /dev/null
    fi
     
    exit $retour
    Signé : Capitaine Jean-Luc Picard

Discussions similaires

  1. Réponses: 0
    Dernier message: 20/04/2015, 17h37
  2. Recherche dans un fichier impossible enregistré dans un fichier
    Par cdjkhdjlhxjklnjskznj dans le forum Langage
    Réponses: 19
    Dernier message: 03/12/2014, 00h09
  3. Réponses: 0
    Dernier message: 26/10/2010, 13h31
  4. Scripts VBS + DOS - sortie dans un fichier de logs
    Par kayanwan dans le forum VBScript
    Réponses: 8
    Dernier message: 14/09/2007, 15h34
  5. Réponses: 3
    Dernier message: 20/09/2006, 11h05

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