У меня есть таблица ITEM
с одним из столбцов как CREATED_DATE
. В кластерной среде многие копии сервисов будут выбирать элементы из этой таблицы и обрабатывать их. Каждый сервис должен выбрать 10 самых старых элементов из таблицы ITEM.
Я могу выбрать первые 10 строк, используя это в хранимой процедуре:
select * from (
select item_id, row_number() over (order by CREATED_DATE) rownumber
FROM item )
where rownumber < 11
Так как многие службы должны использовать это, я использую select ... for update
, чтобы обновить строки как "обработку". Но приведенный ниже оператор FOR UPDATE
завершается с ошибкой для указанного выше оператора select с ошибкой «ORA-02014: невозможно выбрать FOR UPDATE в представлении с DISTINCT, GROUP BY и т. Д.»
OPEN items_cursor FOR
**select Statement**
FOR UPDATE;
Пожалуйста, помогите мне с решением.