В настоящее время мой кодовый скелет выглядит следующим образом:
varchar rowidvariable[batchlimitcount][19];
stmt = "Select rowid from table_name where xx"
delstmt = "delete from table_name where rowid=:rowidvariable"
prepare delstatement using delstmt;
prepare cursor from stmt;
declare cursor from preparecursor;
open cursor;
while(1)
{
fetch cursor into rowidvariable;
somecondition {break};
exec sql for fetchedCount
execute delstatement using :rowidvariable;
commit;
}
Мне было указано, что блокировка таблицы с помощью SELECT FOR UPADATE
будет способом обеспечить 100% блокировку строк и ROWID
в любом случае (как бы мало это ни было) не меняется.
Однако, поскольку commit;
снимает блокировку, и крайне важно, чтобы я удалял ее партиями, поскольку существуют миллионы записей, кажется,быть сложным в продвижении с предложенным решением.
Пожалуйста, сообщите, если есть какие-либо лучшие альтернативы.Заранее спасибо.
Ответ на предыдущий вопрос: Ссылка
Обратите внимание, что весь процесс происходит в oracle-pro-c .