なぜ「rowid」を使用できるときにOracleは「現在の」where構文を作成しましたか?例:PL/SQL「WHERE CURRENT OF」と「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は、セッション内のFOR UPDATE OFカーソルによってロックされた行を更新または削除するために、WHERE CURRENT OF句を提供します。 –