2017-03-23 1 views
0

Je suis venu à travers un code de SP DB2 où je vois à un endroit, une fin Si qui ne dispose pas d'un correspondant SiRogue End If dans le code SP DB2 mais fonctionne toujours

 WHILE (SQLSTATE = '00000') DO 

     IF (SELECT C5STID FROM OS025F WHERE C5OMID = V_OMID) = 30 THEN 

      IF (SELECT COUNT (*) FROM OS085F WHERE J5DLR = P_DLR 
      AND J5OMID = 
      V_OMID AND J5DSID > 0) = 0 THEN 

       INSERT INTO OS108F (L8RGID , L8DLR , L8DESC , L8GOAL , L8TOT) 
       SELECT V_RGID , P_DLR , C5DESC , E2GOAL , 0 
       FROM OS025F AS ORDERMASTER 
       INNER JOIN OS042F AS GOALS ON GOALS . E2OMID = ORDERMASTER . C5OMID 
       WHERE E2DLR = P_DLR 
       AND E2OMID = V_OMID 
       GROUP BY 1 , 2 , C5DESC , E2GOAL ; 

      ELSE IF P_NET = 'Y' THEN 
       INSERT INTO OS108F (L8RGID , L8DLR , L8DESC , L8GOAL , L8TOT ) 
       SELECT V_RGID , P_DLR , C5DESC , E2GOAL , SUM(J5TNDC) 
       FROM OS025F AS ORDERMASTER 
       INNER JOIN OS042F AS GOALS ON GOALS.E2OMID = ORDERMASTER.C5OMID 
       INNER JOIN OS085F AS DEALERORDER ON DEALERORDER.J5OMID = 
       ORDERMASTER.C5OMID AND DEALERORDER.J5DLR = GOALS.E2DLR 
       WHERE E2DLR = P_DLR 
       AND E2OMID = V_OMID 
       AND J5DSID > 0 
       GROUP BY 1, 2, C5DESC, E2GOAL; 

      ELSE 
       INSERT INTO OS108F (L8RGID , L8DLR , L8DESC , L8GOAL , L8TOT) 
       SELECT V_RGID, P_DLR, C5DESC, E2GOAL, SUM(J5TOT) 
       FROM OS025F AS ORDERMASTER 
       INNER JOIN OS042F AS GOALS ON GOALS.E2OMID = ORDERMASTER.C5OMID 
       INNER JOIN OS085F AS DEALERORDER ON DEALERORDER.J5OMID = 
       ORDERMASTER.C5OMID AND DEALERORDER.J5DLR = GOALS.E2DLR 
       WHERE E2DLR = P_DLR 
       AND E2OMID = V_OMID 
       AND J5DSID > 0 
       GROUP BY 1, 2, C5DESC, E2GOAL; 

      END IF ; 

     END IF ; 

     ELSE.... 

Je n'ai collé le morceau de code pertinent ici. Donc, juste avant l'Else à la toute fin, il y a deux End If dont 1 semble inutile. Le code avant le moment (première ligne) est juste quelques déclarations de curseurs etc, donc pas d'importance. Si vous exécutez l'ensemble du code SP dans i navigator, le SP est créé comme une gemme. Je m'attendrais à une erreur à cause de la fin si. Mais le problème ici est que je suis en train de convertir cela en un code RPG équivalent et la compilation échoue .. Erreur d'opération hors de lieu. Quelqu'un peut-il me dire si ils sont capables de comprendre pourquoi la fin supplémentaire si ne manque pas de compiler?

Répondre

0

En fait, j'ai trouvé la réponse .. Le premier Else Si dans le code aurait dû être lu comme un Si dans la partie else. Cela fait tout ajouter. J'ai changé mon RPG pour que la même logique soit appliquée.