使用此功能时,出现除以零的错误。它编译良好。由于我没有使用select语句,所以我假设NULLIF无效。 我该如何避免被零除的问题?
OPEN GET_DATA;
fetch GET_DATA into v_gpa_hsch,v_gpa_hsch_scale,v_gpa_scale,v_gpa,
v_gpa_recalc,v_gpa_hsch_recalc;
IF GET_DATA%NOTFOUND
THEN
IT_final_final_calc :=0;
ELSE
IF v_gpa_hsch_scale < v_gpa_scale
THEN IL_higher_scale_calc := v_gpa_scale;
ELSE IL_higher_scale_calc := v_gpa_hsch_scale;
END IF;
IF v_gpa_hsch < v_gpa
THEN IM_gpa_calc := v_gpa;
ELSE IM_gpa_calc := v_gpa_hsch;
END IF;
IF IM_gpa_calc > IL_higher_scale_calc
THEN IN_highest_gpa_calc := IL_higher_scale_calc;
ELSE IN_highest_gpa_calc := IM_gpa_calc;
END IF;
IO_factor_calc := (IL_higher_scale_calc/4);
--I PRESUME THE FOLLOWING LINE IS THE ISSUE:
IP_rec_calc := +(IN_highest_gpa_calc/IO_factor_calc);
答案 0 :(得分:4)
您可以根据需要使用这两个选项,
使用json
CASE
或IP_rec_calc := CASE IO_factor_calc WHEN 0 then 0 --whatever you want
ELSE +(IN_highest_gpa_calc/IO_factor_calc)
END;
异常处理程序
zero_divide
答案 1 :(得分:4)
您不需要查询即可使用NULLIF
,也可以在PL / SQL中使用它:
IP_rec_calc := IN_highest_gpa_calc / NULLIF(IO_factor_calc, 0);
这甚至是处理这种情况的非常典型的方法。除以零的结果是不确定的,因此我们将其设为空。
答案 2 :(得分:2)
您正在使用编程语言。因此,它具有以下条件:
IF IO_factor_calc = 0 THEN
IP_rec_calc := 0;
ELSE
IP_rec_calc := IN_highest_gpa_calc / IO_factor_calc;
END IF;
您可以在IF和ELSE块中放置更多代码,以备进行一些日志记录之类。
答案 3 :(得分:1)
当IO_factor_calc = 0时,您想要什么结果?你可以做例如
import matplotlib
print(matplotlib.__version__)
import matplotlib.pyplot as plt
sorted_list = [(0.0017821837085763366, 'Activity'),
(0.002649111136700579, 'PeakAccel'),
(0.012697214182994502, 'VerticalPeak'),
(0.014534726412631642, 'ROGState'),
(0.016099772399198357, 'VerticalMin'),
(0.022745210003295983, 'LateralPeak'),
(0.028845102569277088, 'SagittalPeak'),
(0.029479112475744584, 'LateralMin'),
(0.04062328177704225, 'BR'),
(0.08653071485979484, 'SagittalMin'),
(0.09011618483921582, 'Posture'),
(0.13598729040097057, 'HRV'),
(0.22986192060475388, 'ROGTime'),
(0.28804817462980353, 'HR')]
features_sorted = []
importance_sorted = []
for i in sorted_list:
features_sorted += [i[1]]
importance_sorted += [i[0]]
plt.title("Feature importance", fontsize=15)
plt.xlabel("Importance", fontsize=13)
plt.barh(features_sorted, importance_sorted, color="green", edgecolor='green')
plt.show()
答案 4 :(得分:0)
我已经习惯了这个:
IP_rec_calc := DECODE(IO_factor_calc, 0,NULL, IN_highest_gpa_calc / IO_factor_calc);