一例游标中使用变量,变量变常量引起的计算错误

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/ytfy12/article/details/82885164

MOM系统有个自动分配货品的程序,在增加新功能的时候,发现预期的计算分配数量和想象中不同。

测试多次,纸上验算和实际不同,最后怀疑是游标里面使用变量,而变量似乎在游标打开后就不变了。

举例说明:

DECLARE
   L_qty NUMBER :=100;
   CURSOR cur1 IS SELECT ROWNUM row_num,L_qty*10 qty10 FROM dual CONNECT BY ROWNUM<=2;
   
BEGIN
   FOR rec IN cur1 LOOP
      L_qty :=L_qty-1;
      dbms_output.put_line(rec.row_num);
      dbms_output.put_line(L_qty); 
      dbms_output.put_line(rec.qty10);     
   END LOOP;
END;

rec.qty10是不是不随着原始变了减少而减小,总是1000.

此处大坑,聊以记录

猜你喜欢

转载自blog.csdn.net/ytfy12/article/details/82885164