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 :

Un problème en pl/sql


Sujet :

PL/SQL Oracle

  1. #1
    Invité
    Invité(e)
    Par défaut Un problème en pl/sql
    bonjour Svp ou il ya lerreur dans cette code
    cette code pour affiche les nombres pairs et impais qui sont < a un nombre donnée n
    j'essaye avec for et travaille mais seulement avec loop ne travaille pas aidez moi svp
    le code
    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
     
    declare
    n number := &n;
    i number := 1;
    begin
    dbms_output.put_line('les paires :');
    loop
         if mod(i,2)=0 then
              dbms_output.put_line(i);
         else 
              i :=i+1;
         end if;
         exit when i > n; 
    end loop;
    i :=1;
    dbms_output.put_line('les impaires :');
    loop
          if mod(i,2)!=0 then
               dbms_output.put_line(i);
          else 
               i :=i+1;
          end if;
          exit when i > n; 
    end loop;
    end;
    Dernière modification par Invité ; 31/08/2016 à 12h05.

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 786
    Points
    30 786
    Par défaut
    La première chose à faire avec cette portion de code, c'est d'y appliquer une indentation pour mettre en évidence les boucles et les branches de tests...
    Et alors, l'erreur de logique devrait devenir évidente
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  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 Mode Trop Sympa :)

    ca passe en boucle infini votre truc

    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
     
    declare
    n number := &n;
    i number := 1;
    begin
    dbms_output.put_line('les paires :');
    loop
         if mod(i,2)=0 then dbms_output.put_line(i); end if;
         i := i+1;
         exit when i > n; 
    end loop;
    i :=1;
    dbms_output.put_line('les impaires :');
    loop
          if mod(i,2)!=0 then dbms_output.put_line(i); end if;
          i :=i+1; 
          exit when i > n; 
    end loop;
    end;
    Signé : Capitaine Jean-Luc Picard

  4. #4
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 786
    Points
    30 786
    Par défaut
    Citation Envoyé par souflam
    mais est ce que le code est correct
    D'un point de vue syntaxique, le code est correct.
    C'est d'un point de vue logique qu'il y a un problème... que Argoet a bien identifié.
    Pour trouver ce genre d'erreur, il suffit souvent de se munir d'un papier et d'un crayon et d'exécuter à la main les instructions les unes après les autres.
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  5. #5
    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 252
    Points
    11 252
    Par défaut
    Ou laissez le moteur SQL faire le travail
    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
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
     
    Connected to Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 
     
    SQL> set serveroutput on
    SQL> 
    SQL> Declare
      2    n           Pls_Integer := 10;
      3    NbrPaire    sys.odcinumberlist;
      4    NbrImpaire  sys.odcinumberlist;
      5    --
      6    Procedure Print(
      7      Titre                 In Varchar2,
      8      NumCollection         In sys.odcinumberlist
      9    ) Is
     10    Begin
     11      Dbms_Output.put_line(Titre);
     12      For i in 1..NumCollection.Count() Loop
     13        Dbms_Output.put_line(NumCollection(i));
     14      End Loop;
     15    End;
     16    --
     17  Begin
     18    Select Cast(Collect(Case When Mod(level,2) = 0 Then level End) As sys.odcinumberlist) Paires,
     19           Cast(Collect(Case When Mod(level,2) != 0 Then level End) As sys.odcinumberlist) Impaires
     20      Into NbrPaire,
     21           NbrImpaire
     22      From dual
     23    Connect by Level <= n;
     24    --
     25    Print('Les paires:', NbrPaire);
     26    Print('Les impaires:', NbrImpaire);
     27  End;
     28  /
    Les paires:
    2
    4
    6
    8
    10
    Les impaires:
    1
    3
    5
    7
    9
    PL/SQL procedure successfully completed
     
    SQL>

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

Discussions similaires

  1. [SQLserver2000][SQLServer CE] problème de requête SQL
    Par JBernn dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 27/01/2005, 09h29
  2. [Interbase] Problème de syntaxe SQL
    Par navis84 dans le forum InterBase
    Réponses: 4
    Dernier message: 22/12/2004, 17h07
  3. Problème de requète SQL dans un Requery
    Par Keraccess dans le forum Requêtes et SQL.
    Réponses: 7
    Dernier message: 22/10/2004, 14h58
  4. Problème Access to Sql Server
    Par vuldos dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 26/08/2004, 15h56
  5. Réponses: 3
    Dernier message: 18/11/2002, 16h36

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