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?