用一個函數裏面怎麼實現加減乘除運算, 動態sql

解决方案 »

  1.   

    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;
      

  2.   


    if ((p_operator = '/') and (p_param2 < 0)) then
    这句建议改成
    if ((p_operator = '/') and (p_param2 = 0)) then