Я обыскал весь форум, но я не нашел никакой подсказки об этом.
У меня есть промежуточная таблица, которую потребляют несколько потоков.
Чтобы избежать тупика, я использую что-то вроде этого:
SELECT ID_MESSAGE
FROM TB_STAGE_IN S
WHERE S.CD_STATUS = 0
AND S.ID_JOB_SCHEDULE IS NULL
AND ROWNUM <= 10000
FOR UPDATE SKIP LOCKED;
Работает нормально, но потоки не достигают максимум 10000 строк.
Это как:
- Тема 1: 5000
- Тема 2: 3000
- Тема 2: 2000
Я знаю, что это происходит потому, что их число одинаково, но в таблице тысячи и тысячи строк. Что мне действительно нужно, так это поток получает 10 000 строк, разблокированных на каждом шаге.
Я пытался использовать ТОЛЬКО FETCH FIRST 10000 ROWS, но я получаю сообщение ниже:
ORA-02014: невозможно выбрать FOR UPDATE из вида с помощью DISTINCT, GROUP BY и т. Д.
Не могли бы вы все, пожалуйста, помогите мне?
Спасибо за добро.