请帮我转换这个循环语句:
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
的语句。
答案 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;