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 :

pb de if et end loop qui se chevauchent


Sujet :

Oracle

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    958
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 958
    Points : 141
    Points
    141
    Par défaut pb de if et end loop qui se chevauchent
    Bonjour,

    J'ai écrit du code pour traitement de commandes clients mais je reçois le message suivant


    symbole LOOP rencontré à la place d'un des symboles suivants :'if'


    J'ai essyé de corriger cette erreur mais je en vois plus où çà 'cloche', si j'ose dire.
    pourriez vous me dire oùil y a un problème SVP?

    Merci beaucoup à vous.

    Bien cordialement.
    Nathalie

    Voici 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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
     
     
    DECLARE
     
    /*déclaration du curseur qui récupère les données de la table COMMANDES*/
     
     
    	CURSOR curs_commandes is
    	select * from commandes;
     
    	/*déclaration de l'enregistrament qui récupère les données de chaque ligne de la table commandes( et pas de chaque ligne de la table lignes_commande)*/
     
    	rec_commandes  curs_commandes%rowtype;
     
    	/*declaration du curseur paramétré qui récupère le contenu de la table lignes_commande pour un numéro de commande donné)*/
     
    	CURSOR curs_lignes_commande(no_cde COMMANDES.NUM_CDE%TYPE) IS
    	select * from lignes_commande
    	where NUM_CDE = no_cde;
     
    	/*déclaration de l'enregistrement qui récupère chaque ligne de la table lignes_commande)*/
     
    	rec_lignes_commandes  curs_lignes_commande%rowtype;
     
    	/*déclaration des variables qui vont récupérer les contenus des champs suivants : QTE_ART, SEUIL et PU de la table STOCK*/
     
    	qte STOCK.QTE_ART%TYPE;
     
    	seuil STOCK.SEUIL%TYPE;
     
    	prixunit STOCK.PU%TYPE;
     
    	/*ouverture du curseur curs_commandes pour pouvoir traiter les informations */
     
    	BEGIN
    		OPEN curs_commandes;
     
    	/*insertion de chaque ligne du curseur curs_commandes dans un enregistrement approprié pour permettre traitement*/
    	LOOP
    		FETCH curs_commandes INTO rec_commandes;
    		EXIT WHEN curs_commandes%NOTFOUND;
     
     
    		/*si le contenu du champ CODE_ETAT de la commande est !='SO' alors ouverture du curseur qui récupère le contenu de toutes les lignes de commande pour cette commande précise*/
    			IF  rec_commandes.CODE_ETAT!='SO'   THEN
    			OPEN curs_lignes_commande(rec_commandes.NUM_CDE);
    				LOOP
    				FETCH curs_lignes_commande INTO rec_lignes_commande;
    				exit when curs_lignes_commande%NOTFOUND;
     
    		/* si le code_etat de la ligne de commande est !='SO' alors traitement*/
    				IF rec_lignes_commande.CODE_ETAT!='SO' THEN					select STOCK.QTE_ART, STOCK.PU,  STOCK.SEUIL INTO qte, prixunit, seuil FROM STOCK where COD_ART= rec_lignes_commande.COD_ART;
     
    		/* si la qte en stock pour cet article est supérieure à la quantité demandée dans la ligne de commande, alors prélèvement de la qtité demandée à la qtité en stock et maj du champ QTE_ART dans la table STOCK*/
    				IF qte>lignes_commande.QTE_ART then
    				update STOCK 
    				set QTE_ART=lignes_commandes.QTE_ART where COD_ART=lignes_commandes.COD_ART;
     
    		/* une fois la MAJ effectuée, la ligne de commande est soldée pour cet article*/
    				update lignes_commande 
    				set code_etat='SO' 
    				where NUM_CDE=rec_commandes.NUM_CDE and COD_ART = rec_lignes_commandes.COD_ART;
     
    			/*MAJ du code_etat dans la table COMMANDES( passe à l'état 'EC') après opération sur une ligne de commandes*/
     
    			UPDATE COMMANDES 
    			SET CODE_ETAT = 'EC'
    			where NUM_CDE=curs_commandes.NUM_CDE and CODE_ETAT='AT'; 
     
     
     
    			END IF; 
     
    			END IF;
     
    			END LOOP;
     
    	END LOOP;
     
     
    	END;
    /
    Je suis désolée pour le sauts à la ligne mais en faisant un copier -coller il est difficile d'obtenir une plus jolis présentation.
    Merci à vous.
    Nathalie
    Il vaut mieux mobiliser son intelligence sur des conneries que mobiliser sa connerie sur des choses intelligentes. [SHADOKS]

  2. #2
    Membre expert
    Avatar de LeoAnderson
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 938
    Points : 3 199
    Points
    3 199
    Par défaut
    Bref, vous nous demander de debugger votre code ???

    le forum n'est pas et n'a pas vocation à devenir un debugger interactif. La résolution de votre problème (pour lequel il n'y a besoin d'aucun compétence Oracle) se fait aisément en commentant au fur et à mesure et en cherchant les IF/END et FOR LOOP/END LOOP...
    Par ailleurs, sa résolution ne saurait être d'un quelquonque intérêt pour qui que ce soit puisqu'il est plus qu'improbable que quiquonque ait exactement le même problème que vous sur le même code !!!

    A tous : merci donc de ne pas répondre à ce sujet, sauf évidemment le debuggage est une tâche qui vous passionne et vous motive énormément !

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    958
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 958
    Points : 141
    Points
    141
    Par défaut pb de if et end loop qui se chevauchent
    Mon problème est que je ne comprends pas pourquoi on me dit qu'ils se chevauchent et si je vous écris c'est que j'ai repris les fin de if plusieurs fois et que çà ne marche pas.
    Finalement, il y a peut être un autre mauvais enchaînement que j'ai du mal à voir.

    Je n'ai pas pour vocation à attendre passivement qu'on fasse mon travail.
    Désolée pour le malentendu!

    Nathalie
    Il vaut mieux mobiliser son intelligence sur des conneries que mobiliser sa connerie sur des choses intelligentes. [SHADOKS]

  4. #4
    Nouveau membre du Club
    Profil pro
    Developpeur
    Inscrit en
    Mars 2005
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Developpeur

    Informations forums :
    Inscription : Mars 2005
    Messages : 30
    Points : 36
    Points
    36
    Par défaut
    le mieux serait de poster tout le projets MDR

    désolé pour le OT

  5. #5
    McM
    McM est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Points : 7 740
    Points
    7 740
    Billets dans le blog
    4
    Par défaut Re: pb de if et end loop qui se chevauchent
    Citation Envoyé par harbonne
    Mon problème est que je ne comprends pas pourquoi on me dit qu'ils se chevauchent et si je vous écris c'est que j'ai repris les fin de if plusieurs fois et que çà ne marche pas.
    Finalement, il y a peut être un autre mauvais enchaînement que j'ai du mal à voir.

    Je n'ai pas pour vocation à attendre passivement qu'on fasse mon travail.
    Désolée pour le malentendu!

    Nathalie
    T'as revu ton code combien de fois ?

    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
     BEGIN 
       LOOP 
             IF  rec_commandes.CODE_ETAT!='SO'   
    			THEN 
                LOOP 
                IF rec_lignes_commande.CODE_ETAT!='SO' 
    				THEN
    	           	IF qte>lignes_commande.QTE_ART 
    					THEN 
    		         END IF; 
     
            	 END IF; 
     
             END LOOP; 
     
       END LOOP; 
       END;
    Combien de IF et de END IF ?
    More Code : More Bugs. Less Code : Less Bugs
    Mon Blog PL/Sql : Fichier Zip / Image BMP / Lire sqliteDB / QRCode et Images PNG ou BMP

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    958
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 958
    Points : 141
    Points
    141
    Par défaut [resolu]pb de if et end if
    Il n' ya plus de pb -Merci à vous
    Il vaut mieux mobiliser son intelligence sur des conneries que mobiliser sa connerie sur des choses intelligentes. [SHADOKS]

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

Discussions similaires

  1. SSIS Boucle For Loop qui ne tourne pas
    Par baime dans le forum SSIS
    Réponses: 2
    Dernier message: 17/01/2014, 15h50
  2. Do Loop qui ne s'arrete pas
    Par sabinaS dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 25/06/2011, 22h57
  3. Partitions qui se chevauchent
    Par Petsman dans le forum Administration système
    Réponses: 1
    Dernier message: 08/07/2007, 08h58
  4. Réponses: 4
    Dernier message: 19/05/2006, 23h14
  5. IDT, GDT qui se chevauchent ?
    Par Edouard Kaiser dans le forum x86 32-bits / 64-bits
    Réponses: 1
    Dernier message: 19/07/2005, 13h43

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