Я пишу процедуру, которая удаляет старые строки по дате их просмотра:
;WITH pv AS (
SELECT
RN = ROW_NUMBER() OVER (ORDER BY viewed DESC)
FROM
previouslyViewed
WHERE
userId = @userId
)
DELETE FROM pv WHERE RN >= 10
Это работает в SQL Server, но не в Oracle.
Oracle не поддерживает WITHУДАЛИТЬ комбинацию.Также он не поддерживает комбинацию DELETE ORDER BY (которую теоретически можно использовать с rownum для достижения того же результата).Я попытался создать временное представление с помощью rownum и удалить из него, но я получаю ошибку Oracle - похоже, вы не можете удалить из представления при использовании rownum.
У кого-нибудь есть указатели?