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

Shell et commandes POSIX Discussion :

Script ksh et base de données


Sujet :

Shell et commandes POSIX

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Mars 2005
    Messages
    319
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 319
    Par défaut Script ksh et base de données
    Bonjour,

    J'ai une fonction sous oracle et je souhaiterai la lancer via un script ksh
    en lui passant des paramètres.

    J'ai réussi à faire cette partie mais ce qui me dérange,
    c'est la gestion des erreurs.
    Ma fonction peut sortir en erreur pour diverse raison( ORA....)
    mais comment faire pour récupérer l'erreur oracle dans mon script ?
    Je voudrais que si la fonction échoue,
    je trap l'erreur et je l'affiche dans la log de mon script puis je passe l'étape suivante.

    Merci.

  2. #2
    Modérateur
    Avatar de jlliagre
    Homme Profil pro
    Ingénieur support avancé & développement
    Inscrit en
    Juin 2007
    Messages
    2 695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur support avancé & développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 695
    Par défaut
    Un exemple de ce que tu as déjà écrit et de son résultat serait bienvenu !

  3. #3
    Expert confirmé Avatar de frp31
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2006
    Messages
    5 196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2006
    Messages : 5 196
    Par défaut
    pourquoi pas tout simplement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    #!/bin/bash
    #diverses actions au debut du script
    (
    sqlplus ...............  << EOT
    .......................
    .......................
    ........................
    .........................
    EOT
    ) 1> /var/log/$0.$(date +%Y%m%d:%H%M%S).log 2> /var/log/$0.$(date +%Y%m%d:%H%M%S).err
    #diverses actions de fin de script traitement d'erreurs etc....
    y'a un moment que j'ai pas bossé sous oracle mais il me semble que les messages généraux d'erreur sont sur STDERR et que donc tu peux les logguer....

    et rien n'empêche d'avoir en plus de cette structure un spool pour logguer l'action SQL elle même....

  4. #4
    Membre éclairé
    Inscrit en
    Mars 2005
    Messages
    319
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 319
    Par défaut
    Voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    sqlplus -s $compte/$password@$base <<EOF                                                                                                       
    exec PRC_DATA_PMP();
    EOF
    if [ $? -eq 0 ]
    then
     echo "Procédure en succès"
    else
     echo  "Procédure en échec"
    exit 5
    fi
    Le truc est que ma procédure tombe en échec pour l'erreur suivante ,
    c'est ce qui s'affiche dans mon terminal :

    ERROR at line 5:
    ORA-00942: table or view does not exist
    ORA-06512: at "PRC_DATA_PMP", line 69
    ORA-06512: at line 5
    Par contre, le script continue mais affiche
    Procédure en succès au lieu de Procédure en échec.

    Je ne comprends pas.

  5. #5
    Modérateur
    Avatar de jlliagre
    Homme Profil pro
    Ingénieur support avancé & développement
    Inscrit en
    Juin 2007
    Messages
    2 695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur support avancé & développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 695
    Par défaut
    Essaie ça (pas testé) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    sqlplus -s $compte/$password@$base <<EOF                                                                                                       
    whenever sqlerror exit sql.sqlcode;
    exec PRC_DATA_PMP();
    EOF
    ...

  6. #6
    Expert confirmé Avatar de frp31
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2006
    Messages
    5 196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2006
    Messages : 5 196
    Par défaut
    Citation Envoyé par Melvine Voir le message
    Voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    sqlplus -s $compte/$password@$base <<EOF                                                                                                       
    exec PRC_DATA_PMP();
    EOF
    if [ $? -eq 0 ]
    then
     echo "Procédure en succès"
    else
     echo  "Procédure en échec"
    exit 5
    fi
    Le truc est que ma procédure tombe en échec pour l'erreur suivante ,
    c'est ce qui s'affiche dans mon terminal :



    Par contre, le script continue mais affiche
    Procédure en succès au lieu de Procédure en échec.

    Je ne comprends pas.
    normal puisque sqlplus lui c'est terminé avec succès et envoie le status 0/OK au shell ...
    il faut gèrer la sortie au niveau SQL comme indiqué par l'ami jlliagre l'a suggéré.

Discussions similaires

  1. Recherche script comparaison de base de données
    Par yobogs dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 11/08/2010, 09h36
  2. [SQL2K5] Script Backup de base de données
    Par CarlaJohnson dans le forum Administration
    Réponses: 11
    Dernier message: 10/08/2010, 11h46
  3. Créer un script de la base de données
    Par la_poupee_irradiee dans le forum Débuter
    Réponses: 2
    Dernier message: 08/07/2009, 18h55
  4. Creation script Sql de base de données et erreur NOLOCK
    Par miniquick dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 30/04/2009, 09h12
  5. Script louche dans base de données
    Par copin dans le forum Général Conception Web
    Réponses: 3
    Dernier message: 09/06/2008, 17h23

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