Stored procedures 在DB2 SP代码中使用Rogue End If,但仍然有效
我遇到了一个DB2SP代码,其中我看到了一个位置,一个没有相应If的End IfStored procedures 在DB2 SP代码中使用Rogue End If,但仍然有效,stored-procedures,db2,ibm-midrange,iseries-navigator,Stored Procedures,Db2,Ibm Midrange,Iseries Navigator,我遇到了一个DB2SP代码,其中我看到了一个位置,一个没有相应If的End If 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 =
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....
我只在这里粘贴了相关的代码。所以在最后的Else之前,有两个end If,其中1似乎是不必要的东西。while之前的代码(第一行)只是一些游标等的声明,所以并不重要。如果在iNavigator中运行整个SP代码,则会像创建宝石一样创建SP。我希望由于结束if而抛出一个错误。但这里的问题是我试图将其转换为等效的RPG代码,编译失败..Endyy操作不正确。有人能告诉我,他们是否能够理解为什么额外的end if没有编译失败?事实上,我找到了答案。。代码中的第一个Else If实际上应该在Else部分中作为If读取。这使一切都加起来了。我已经更改了我的RPG,以便应用相同的逻辑