使用游标将pure for循环转换为for循环

时间:2015-12-21 15:45:24

标签: plsql

请帮我转换这个循环语句:

BEGIN
   FOR employee_rec in (SELECT * FROM BONUS)
   LOOP
      IF employee_rec.BONVALUE > 500 THEN
        UPDATE BONUS
        SET BONUS.TAX = BONUS.BONVALUE * 0.12 WHERE employee_rec.BONVALUE = BONUS.BONVALUE;
      ELSIF 
      -- ...
      END IF;

   END LOOP;
END;

进入使用CURSOR的语句。

1 个答案:

答案 0 :(得分:3)

您拥有的是基于隐式游标定义的循环。听起来你想要一个基于显式游标定义的循环。

如评论中所述。只需在声明部分中明确定义 光标。

DECLARE
   CURSOR cur_bonus IS
   SELECT *
   FROM bonus;
BEGIN
   FOR employee_rec IN cur_bonus
   LOOP
      IF employee_rec.BONVALUE > 500 THEN
        UPDATE BONUS
        SET BONUS.TAX = BONUS.BONVALUE * 0.12 WHERE employee_rec.BONVALUE = BONUS.BONVALUE;
      ELSIF 
      -- ...
      END IF;

   END LOOP;
END;