我有一个游标和一个for来更新表的每一行,使用一个函数来获取新值。该表可以包含数千行。该函数返回一个简单的字符串,它已经在很多现有程序中使用,因此不能选择更改它。
var_item VARCHAR2(20);
CURSOR cursor IS
SELECT DISTINCT column1 FROM table1;
BEGIN
OPEN cursor;
LOOP
FETCH cursor INTO var_item;
EXIT WHEN cursor%NOTFOUND;
UPDATE table1 SET status = (SELECT check_status(var_item) FROM dual) WHERE column1 = var_item;
END LOOP;
CLOSE cursor;
END;
我的问题是,有更快的方法吗?我不喜欢使用游标,因为它们非常慢。有没有办法为这种工作使用简单的更新?或者加速游标? 我看到很多关于BULK COLLECT和SELECT FOR UPDATE的东西,但我真的不明白这些事情要说实话。 有人可以帮助我如何有效地做到这一点,而不使用太多的数据库性能? 提前谢谢。