问题如下,我在用FOR循环时出现下面情况,在(1)情况结果就是v_add_rate为5.5,可在2情况下为什么还0呢,按说v_chg_rate也是固定值呀,为什么他就不循环加呢?(1):
CREATE OR REPLACE Procedure p_tmep Is
v_chg_rate float := 0.1;
i int := 5;
v_add_rate float := 0;Begin
For t In 1..i Loop
  v_add_rate := v_add_rate + 0.1; 
End Loop;
 dbms_output.put_line(v_add_rate);
End p_tmep;(2):
CREATE OR REPLACE Procedure p_tmep Is
v_chg_rate float := 0.1;
i int := 5;
v_add_rate float := 0;Begin
For t In 1..i Loop
  v_add_rate := v_add_rate + v_chg_rate;
End Loop;
 dbms_output.put_line(v_add_rate);
End p_tmep;

解决方案 »

  1.   

    建议在dbms_output.put_line(v_add_rate);前加一条测试语句:dbms_ouput.put_line(v_chg_rate)
    看一下,此时v_chg_rate的值是不是0.1
    我想这样就可以找到答案了。
      

  2.   

    把float类型改成NUMBER(3,1)试试, 估计是数据精度转换的问题
      

  3.   

    我在oracle 10g下面测试过了,两个程序输出的结果是一样的,都是.5,不知道楼主用的是什么版本,有可能是在float和int型转换时出的问题