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 :

control des flux dans un script PL


Sujet :

PL/SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Avril 2006
    Messages
    702
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 702
    Par défaut control des flux dans un script PL
    Bonjour a tous
    Je doit regrouper dans un seul script PL SQL, 5 JOBS.

    les jobs sont: 4 refresh de materialized_view, et le dernier est un script de chargement de données.
    Le truc c'est que je voudrais que les steps se realisent les uns apres les autres si et seulement si l'anterieur a bien marché sans erreur, car le job 2 par exemple ne fonctionne pas si le 1 n'a pas marché etc...
    Donc ma question est:
    Comment je sais que une commande a terminé avec succes?
    Par exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    BEGIN
    dbms_refresh.REFRESH('"OWNER"."MAT_VIEW1"');
    dbms_refresh.REFRESH('"OWNER"."MAT_VIEW2"');
    ....
    END;
    MAT_VIEW2 fonctionne que si mat view 1 a ete refresh sans erreurs...Lorsque un dbms est executé ca retourne un code? 0 pour ok 1 pour erreur, qqu chose que je pourrais tester dans un IF?

    D'avance merci

  2. #2
    Membre éprouvé Avatar de Kazevil
    Homme Profil pro
    Inscrit en
    Août 2006
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2006
    Messages : 105
    Par défaut
    Hello tu as essayé d'utiliser la vue USER_MVIEWS (ou ALL_ ou DBA_)

    Tu trouveras le champs LAST_REFRESH_DATE, que tu peux ensuite comparer à par exemple sysdate - 1h ou tout autre intervalle de ton choix.

    Cordialement

    Kaz

  3. #3
    Membre éclairé
    Inscrit en
    Avril 2006
    Messages
    702
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 702
    Par défaut
    Salut
    ok bonne idée pour les MAT_VIEW.
    Mais plus generalement, si j'ajoute un step qui n'est pas un refresh?
    Par exemple ce type de code ca marcherais?
    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
     
    BEGIN
    --step 1
    dbms_refresh.REFRESH('"OWNER."MAT_VIEW1"');
    Exception
        When OTHERS Then
    	EXIT;
    --step 2
    dbms_refresh.REFRESH('"OWNER."MAT_VIEW2"');
    Exception
        When OTHERS Then
    	EXIT;
    --step 3
    exec package.fonction;
    Exception
        When OTHERS Then
    	EXIT;
    END;
    /
    D'avance merci

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    90
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 90
    Par défaut exception ?
    Et pourquoi ne pas travailler avec une interception des erreurs ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    BEGIN
        BEGIN
           dbms_refresh.REFRESH('"OWNER"."MAT_VIEW1"');
        EXCEPTION
            WHEN OTHERS THEN EXIT;
        END;
     
        BEGIN
           dbms_refresh.REFRESH('"OWNER"."MAT_VIEW2"');
        EXCEPTION
            WHEN OTHERS THEN EXIT;
        END;
    ...........
    END;

  5. #5
    Membre éclairé
    Inscrit en
    Avril 2006
    Messages
    702
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 702
    Par défaut
    Salut
    les post se sont croisés je pense...
    Donc je peux utiliser les exeptions..cool
    La diference entre ton code et le miens c'est dans le tiens il y a END; apres le EXIT....
    ok je vais le rajouter et tester.

    Merci encore

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    90
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 90
    Par défaut
    Je met un
    BEGIN
    .....
    END;
    pour encadrer tout le code PL/SQL et un
    BEGIN
    ...
    EXCEPTION
    ...
    END;

    pour encadrer toutes les commandes que je lance dont je veux vérifier le bon déroulement.

  7. #7
    Membre éclairé
    Inscrit en
    Avril 2006
    Messages
    702
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 702
    Par défaut
    ok...ben ca marche bien
    Merci a tous pour votre aide.

    A plus

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

Discussions similaires

  1. Controler des textBox dans des thread
    Par ramaro dans le forum Windows Forms
    Réponses: 5
    Dernier message: 25/04/2008, 14h21
  2. Actualisations automatiques des liens dans mon script
    Par Geekolin dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 06/01/2008, 14h01
  3. controle des champs dans formulaire
    Par nima5 dans le forum IHM
    Réponses: 7
    Dernier message: 31/12/2007, 13h10
  4. Validation , controle des erreurs dans la jsp.
    Par kalurar dans le forum Struts 2
    Réponses: 2
    Dernier message: 13/08/2007, 15h33
  5. [AIX] Gestion des erreurs dans un script
    Par f-k-z dans le forum AIX
    Réponses: 2
    Dernier message: 17/07/2007, 08h45

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