在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;
/
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;
/
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货