在PL/SQL Developer Version 6.0.5.926 的Test script—>Start debugger —> Step into —>窗口中调试存储过程代码时,发现以下代码中的有 “----被覆盖执行”或“----被覆盖执行到,IF语句条件成立执行完then语句后直接转向此语句” 等注释(注释是现在提问时加上的)的那个IF语句的true和false分支都被执行到? 望解惑,不胜感激!
CREATE OR REPLACE PACKAGE BODY LR_K140_HL IS
PROCEDURE LR_K140_HL
  ( 
    P_JH      IN VARCHAR2,
    P_YPBH    IN VARCHAR2, 
    C         OUT CUR)
AS
    --TYPE T_VAR IS TABLE OF NUMBER INDEX BY BINARY_INTEGER; 
    V_COUNT  NUMBER;
    
    V_NA2S2O3   NUMBER;
    V_H2C204    NUMBER;
    V_EDTA      NUMBER;
    V_AGNO3     NUMBER;
    
    HL_SO4   NUMBER; -- SO42- 离子含量
    HL_Mg    NUMBER; -- Mg2+  离子含量
    HL_Ca    NUMBER; -- Ca2+  离子含量
    HL_S     NUMBER; -- S2-   离子含量
    HL_Fe3   NUMBER; -- Fe3+  离子含量
    HL_Fe2   NUMBER; -- Fe2+  离子含量
    HL_CO2   NUMBER; -- CO2   含量
    
    V_CaSO4  NUMBER; -- 推算CaSO4含量
    V_CaCO3  NUMBER; 
    V_MgCO3  NUMBER; 
    V_CaO    NUMBER;   
    V_MgO    NUMBER;  
    V_FeCO3  NUMBER;
    V_FeS    NUMBER;
    V_FeO    NUMBER;
    V_Fe2O3  NUMBER;
    V_CO2_SY  NUMBER;    ……
    ……           
                ---- CaSO4%                                                 
                IF ((HL_SO4 IS NOT NULL) AND (HL_Ca IS NOT NULL)) THEN
                   IF ( HL_Ca/HL_SO4)>0.417 THEN   
                      V_CaSO4:=1.417 * HL_SO4;
                      /*0.417 * HL_SO4 , 与硫酸根结合的钙 */
                      IF ((HL_Ca-0.417 * HL_SO4)/HL_CO2)>0.911 THEN
                          V_CaCO3:=2.274 * HL_CO2;
                          --钙过量,无MgCO3,FeCO3
                          --有可能有CaO,MgO,FeO,FeS,Fe2O3,先算CaO
                          V_CaO := 1.399 * ( HL_Ca - 0.400 * V_CaCO3 - 0.417 * HL_SO4 );
                      ELSE 
                          V_CaCO3 := 2.497 * (HL_Ca-0.417 * HL_SO4);
                          IF (HL_CO2-(0.44*V_CaCO3))>0 AND (HL_Mg/(HL_CO2-(0.44*V_CaCO3)))>0.552 THEN
                             V_MgCO3 := 1.916 * (HL_CO2-(0.44*V_CaCO3)) ;
                             --镁过量,无FeCO3
                             --有可能有MgO,FeO,FeS,Fe2O3,先算MgO
                             V_MgO := 1.658 * ( HL_Mg - 0.288 * V_MgCO3 );
                          ELSE
                              V_MgCO3 := 3.468 * HL_Mg;
                              IF (HL_CO2-(0.44*V_CaCO3)-(0.522*V_MgCO3))>0 AND (HL_Fe2/(HL_CO2-(0.44*V_CaCO3)-(0.522*V_MgCO3)))>1.269 THEN 
                                  V_FeCO3 := 2.633 * (HL_CO2-(0.44*V_CaCO3)-(0.522*V_MgCO3));   ----被覆盖执行到                        
                                  --铁过量,有可能有FeO,FeS,Fe2O3     ----被覆盖执行到                        
                                  V_FeS := 2.742 * HL_S;     ----被覆盖执行到                        
                                  V_FeO := 1.286 * ( HL_Fe2 - 0.482 * V_FeCO3 - 0.635 * V_FeS );   ----被覆盖执行到                        
                                  V_Fe2O3 := 1.430 * HL_Fe3;     ----被覆盖执行到                        
                              ELSE 
                                  V_FeCO3 := 2.074 * HL_Fe2;     ----没有被覆盖执行到                        
                                  --剩余的二氧化碳
                                  V_CO2_SY := HL_CO2-(0.44*V_CaCO3)-(0.522*V_MgCO3)-(0.380*V_FeCO3);     ----被覆盖执行到,IF语句条件成立执行完then语句后直接转向此语句,(被覆盖时,代码背景色为蓝色)                    
                              END IF;                            
                          END IF;                          
                      END IF;     
                   ELSE
                       V_CaSO4 :=3.397 * HL_Ca;  --硫酸根过量,无钙离子,无CaCO3
                       -- 判断有无 MgCO3
                       IF (HL_Mg/HL_CO2)>0.552 THEN
                           V_MgCO3 := 1.916 * HL_CO2;
                           --镁过量,无FeCO3
                           --有可能有MgO,FeO,FeS,Fe2O3,先算MgO
                           V_MgO := 1.658 * ( HL_Mg - 0.288 * V_MgCO3 );
                       ELSE 
                           V_MgCO3 := 3.468 * HL_Mg;
                           IF (HL_CO2-(0.522*V_MgCO3))>0 AND (HL_Fe2/(HL_CO2-(0.522*V_MgCO3)))>1.269 THEN 
                               V_FeCO3 := 2.633 * (HL_CO2-(0.522*V_MgCO3));
                               --铁过量,有可能有FeO,FeS,Fe2O3
                               V_FeS := 2.742 * HL_S;
                               V_FeO := 1.286 * ( HL_Fe2 - 0.482 * V_FeCO3 - 0.635 * V_FeS );
                               V_Fe2O3 := 1.430 * HL_Fe3;  
                           ELSE
                               V_FeCO3 := 2.074 * HL_Fe2;
                               --剩余的二氧化碳
                               V_CO2_SY := HL_CO2-(0.522*V_MgCO3)-(0.380*V_FeCO3);                                              
                           END IF;                                      
                       END IF;                      
                   END IF;                   
                END IF;                          
        END ;
    END IF;
    ……
    ……         
END;
END LR_K140_HL;
/