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 :

Débutante : Boucle if


Sujet :

Oracle

  1. #1
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    103
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 103
    Points : 59
    Points
    59
    Par défaut Débutante : Boucle if
    Bonjour,

    J'écris actuellement un script oracle, et j'ai un souci avec une boucle IF. Je m'explique, je souhaiterais faire un OU dans la condition du IF. Le ET c'est &&, mais le || est utilisé pour de la concaténation de chaîne du coup je vois pas comment faire.
    Voici un exemple de mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    IF      ((SELECT COUNT(*) FROM MACHIN) > 0)      OR      ((SELECT COUNT(*) FROM CHOSE) > 0)
       --instructions
    ENDIF
    Merci d'avance pour votre aide précieuse

  2. #2
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 947
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 947
    Points : 5 846
    Points
    5 846
    Par défaut
    C'est AND et OR qu'il faut utiliser, par contre vous devez d'abord stocker le résultat du count dans une variable, par exemple :
    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
    SQL> set serverout on
    SQL> declare
        l_nbmachin number;
    begin
        select count(*) into l_nbmachin from dual;
        dbms_output.put_line('l_nbmachin = '||l_nbmachin);
        if( (l_nbmachin = 2) or (l_nbmachin > 0) ) then
            dbms_output.put_line('TRUE OR');
        else
            dbms_output.put_line('FALSE OR');
        end if;
     
        if( (l_nbmachin = 2) and (l_nbmachin > 0) ) then
            dbms_output.put_line('TRUE AND');
        else
            dbms_output.put_line('FALSE AND');
        end if;
    end;
    /
    l_nbmachin = 1
    TRUE OR
    FALSE AND
     
    Procedure PL/SQL terminee avec succes.
     
    SQL>
    PS : Un IF est un test conditionnel, pas une boucle

  3. #3
    Rédacteur/Modérateur

    Avatar de Fabien Celaia
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2002
    Messages
    4 222
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2002
    Messages : 4 222
    Points : 19 551
    Points
    19 551
    Billets dans le blog
    25
    Par défaut
    Formule plus minimaliste:

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    declare l_machin number, l_chose number;
    BEGIN
    select count(*) into l_machin from MACHIN;
    select count(*) into l_chose from CHOSE;
    IF  (l_machin + l_chose) > 0
            -- Votre action     
    END IF; 
    END; /
    Sr DBA Oracle / MS-SQL / MySQL / Postgresql / SAP-Sybase / Informix / DB2

    N'oublie pas de consulter mes articles, mon blog, les cours et les FAQ SGBD

    Attention : pas de réponse technique par MP : pensez aux autres, passez par les forums !

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

Discussions similaires

  1. Réponses: 16
    Dernier message: 25/05/2007, 15h51
  2. [Débutant]Boucle sans fin : Wend non reconnu
    Par SebHoule dans le forum IHM
    Réponses: 5
    Dernier message: 12/06/2006, 16h49
  3. [Débutant] boucle for et vector
    Par zenux dans le forum SL & STL
    Réponses: 4
    Dernier message: 22/03/2006, 00h18
  4. [Débutant]Boucle imbriquée avec des bornes différentes
    Par Hayato dans le forum Algorithmes et structures de données
    Réponses: 2
    Dernier message: 29/08/2005, 16h23
  5. [débutant] boucle en sxl
    Par laurent.c123 dans le forum XMLRAD
    Réponses: 2
    Dernier message: 15/06/2005, 14h55

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