Но я не хочу использовать подзапрос. Bcoz в Prod у меня есть один тяжелый стол
где я хочу применить ту же логику. Так что нужно идти с курсором.
Почему вы предполагаете, что цикл через CURSOR
для отображения в блоке PL / SQL эффективнее, чем простой оператор выбора?
Я мог бы дать вам этот запрос в качестве другой альтернативы вашему подзапросу, используя аналитическую функцию COUNT
.
SELECT ID
,Name
,AGE
FROM (
SELECT a.*
,COUNT(*) OVER (PARTITION BY AGE) AS c
FROM abc a
) where c > 1;
Если вы все еще хотите применить ту же логику в PL / SQL с использованием цикла, делайте это только в том случае, если вы выполняете какие-либо DML (INSERT
, UPDATE
и т. Д., Динамические DDL и т. Д. В противном случае, просто выберите SQL или одиночный open cursor
с выбором будет достаточно для отображения вывода или передачи CURSOR
во внешнее приложение или