create or replace function fun_math(p_param1 in number, p_param2 in number, p_operator in char) return number is v_result number; v_operator char(1); v_param1 number; v_param2 number; begin if p_operator in('+','-','*','/') then v_operator := p_operator; v_param1 := p_param1; v_param2 := p_param2; if ((p_operator = '/') and (p_param2 < 0)) then return 0; end if; else return 0; end if;
execute immediate 'select ' || v_param1 || v_operator || v_param2 || ' from dual' into v_result; return v_result; end fun_math;
if ((p_operator = '/') and (p_param2 < 0)) then 这句建议改成 if ((p_operator = '/') and (p_param2 = 0)) then
is
v_result number;
v_operator char(1);
v_param1 number;
v_param2 number;
begin
if p_operator in('+','-','*','/') then
v_operator := p_operator;
v_param1 := p_param1;
v_param2 := p_param2;
if ((p_operator = '/') and (p_param2 < 0)) then
return 0;
end if;
else
return 0;
end if;
execute immediate 'select ' || v_param1 || v_operator || v_param2 || ' from dual'
into v_result;
return v_result;
end fun_math;
if ((p_operator = '/') and (p_param2 < 0)) then
这句建议改成
if ((p_operator = '/') and (p_param2 = 0)) then