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

  1. #1
    Membre du Club
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    février 2018
    Messages
    289
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : février 2018
    Messages : 289
    Points : 63
    Points
    63
    Par défaut Boucler plusieurs fois - ne pas entrer dans la boucle SSI la condition est vérifiée
    Bonjour,
    y a un moyen d'utiliser la boucle IF ou LOOP et reboucler jusqu’à vérification de la condition?
    exemple :
    J'ai un bloc d’instructions :

    instruction 01
    ..traitement dur une table TABLE_A
    instruction 02
    ...
    instruction 03
    ici une autre procédure se lance automatiquement et change une valeur dans la colonne X de la table_A
    ...
    instruction 04
    ici je souhaite vérifier que tous les statuts de la colonne X de la table_A ont été modifiés (=1)
    IF STATUT X = 1 then

    faire ....

    END IF;

    nb : si les statuts n'ont pas tous à 1 je dois revérifier encore une fois jusqu’à vérification de la condition

    Bien à vous.

  2. #2
    Membre éprouvé
    Homme Profil pro
    Développeur Oracle
    Inscrit en
    décembre 2019
    Messages
    738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : décembre 2019
    Messages : 738
    Points : 1 182
    Points
    1 182
    Par défaut
    Bonjour,

    Il existe CONTINUE ou CONTINUE WHEN depuis la 11g qui permet de passer à l'itération suivante au sein d'une boucle. Je dois dire que son intérêt est assez limité et je l'ai très peu utilisé. Je ne sais pas si cela peut répondre à ton besoin car je ne pense pas avoir tout saisi.

  3. #3
    Membre du Club
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    février 2018
    Messages
    289
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : février 2018
    Messages : 289
    Points : 63
    Points
    63
    Par défaut
    Citation Envoyé par vanagreg Voir le message
    Bonjour,

    Il existe CONTINUE ou CONTINUE WHEN depuis la 11g qui permet de passer à l'itération suivante au sein d'une boucle. Je dois dire que son intérêt est assez limité et je l'ai très peu utilisé. Je ne sais pas si cela peut répondre à ton besoin car je ne pense pas avoir tout saisi.
    merci pour votre réponse, mais je souhaiterai savoir si la CLAUSE : CONTINUE attend la vérification du condition ou elle passe directement au suivant?

  4. #4
    Membre éprouvé
    Homme Profil pro
    Développeur Oracle
    Inscrit en
    décembre 2019
    Messages
    738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : décembre 2019
    Messages : 738
    Points : 1 182
    Points
    1 182
    Par défaut
    Bonjour,

    Il est possible de préciser une condition avec WHEN : CONTINUE WHEN ...

  5. #5
    Membre du Club
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    février 2018
    Messages
    289
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : février 2018
    Messages : 289
    Points : 63
    Points
    63
    Par défaut
    Citation Envoyé par vanagreg Voir le message
    CONTINUE WHEN ...
    d'accord, mais est ce que si la condition n'est pas vérifier jusqu'après quelques instant (de 2 à 3 minutes environ est ce que il attend ou il passe directement?
    salutations

  6. #6
    Membre éprouvé
    Homme Profil pro
    Développeur Oracle
    Inscrit en
    décembre 2019
    Messages
    738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : décembre 2019
    Messages : 738
    Points : 1 182
    Points
    1 182
    Par défaut
    Non il n'y a pas d'attente. Si tu souhaites "pauser" l'exécution alors tu peux utiliser DBMS_LOCK.sleep(nb_secondes), ou DBMS_SESSION.sleep à partir de la 18c.

  7. #7
    Modérateur

    Homme Profil pro
    Consultant Teradata
    Inscrit en
    septembre 2008
    Messages
    8 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant Teradata

    Informations forums :
    Inscription : septembre 2008
    Messages : 8 121
    Points : 16 349
    Points
    16 349
    Par défaut
    Utilisez WHILE.

  8. #8
    Membre du Club
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    février 2018
    Messages
    289
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : février 2018
    Messages : 289
    Points : 63
    Points
    63
    Par défaut
    Citation Envoyé par Waldar Voir le message
    Utilisez WHILE.
    je pense pas que ça va servir, vu que la clause WHILE sort de la boucle une fois la condition est non vérifiée !
    moi je voudrai attendre un moment le temps que le statut sera = 1 après entrée directement dans la boucle

  9. #9
    Modérateur

    Homme Profil pro
    Consultant Teradata
    Inscrit en
    septembre 2008
    Messages
    8 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant Teradata

    Informations forums :
    Inscription : septembre 2008
    Messages : 8 121
    Points : 16 349
    Points
    16 349
    Par défaut
    De ce que j'ai compris ici :
    Citation Envoyé par LandGreen Voir le message
    instruction 03
    ici une autre procédure se lance automatiquement et change une valeur dans la colonne X de la table_A
    ...
    instruction 04
    ici je souhaite vérifier que tous les statuts de la colonne X de la table_A ont été modifiés (=1)
    IF STATUT X = 1 then

    faire ....

    END IF;

    Je ferai quelque chose du genre :
    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
    declare
        v$_flag    simple_integer := 0;
    begin
     
        -- Vos traitements de mise à jour
     
        while v$_flag = 0
        loop
            select case count(*) when sum(statut) then 1 else 0 end
              into v$_flag
              from matable;
            sys.dbms_session.sleep(3);
        end loop;
     
        -- La suite du traitement
    end;
    /

  10. #10
    Expert éminent sénior Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

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

    Informations forums :
    Inscription : octobre 2007
    Messages : 5 611
    Points : 11 578
    Points
    11 578
    Par défaut
    Je pense que vous devez essayer de fournir un jeu de aussi simple que possible. On peux s'imaginer divers solutions mais je trouve que le problème est énoncé d'une manière trop vague.
    Si vous utilisez la solution que Waldar vous a fourni n'oubliez pas de prévoir une sortie du traitement au bout des N cycles d'attente et de réessaie sinon vous risquez d'avoir un traitement sans fin

Discussions similaires

  1. Réponses: 1
    Dernier message: 03/06/2008, 09h27
  2. Plusieurs fois la même donnée dans une liste
    Par BRUNO71 dans le forum IHM
    Réponses: 3
    Dernier message: 21/01/2008, 08h22
  3. Réponses: 3
    Dernier message: 13/10/2007, 16h31
  4. Réponses: 19
    Dernier message: 10/05/2007, 13h50
  5. Plusieurs fois le même .class dans le jar
    Par kenny6 dans le forum Général Java
    Réponses: 7
    Dernier message: 25/04/2007, 16h42

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