Почему Oracle сделал синтаксис «где текущий», когда вы можете использовать «rowid»? Пример:PL/SQL «WHERE CURRENT OF» vs «ROWID»
BEGIN
FOR rec IN (SELECT t.column1, t.rowid rid FROM test_table) LOOP
UPDATE test_table tb SET column1 = some_function(rec.column1) WHERE tb.rowid = rec.rid;
END LOOP;
COMMIT;
END;
DECLARE
CURSOR cur IS SELECT t.column1 FROM test_table;
param1 test_table.column1%TYPE;
BEGIN
LOOP
FETCH cur INTO param1;
UPDATE test_table tb SET tb.column1 = some_function(param1) WHERE CURRENT OF cur;
EXIT WHEN cur%NOTFOUND;
END LOOP;
COMMIT;
END;
Oracle предоставляет предложение WHERE CURRENT OF для обновления или удаления строк, заблокированных курсором FOR UPDATE OF в сеансе. –