[quote=”binhobiork”:dru61ugp]
Eu sei que eu poderia usar o select para retornar o count, mas esse foi só um exemplo. Na verdade o select que estou usando é muito grande e contem varios UNION.[/quote]
O uso de cursor for loop tem alguns anos que já está obsoleto no Oracle, desde o lançamento da versão 9i, por ser extremamente lento e ineficiente. Combine isso com um select que potencialmente usa um plano de acesso não otimizado (com vários Unions) e há razão para acreditar que o desempenho do procedimento seja muito mais lento do que deveria ser.
Tente substituir o cursor loop por uso de bulk collect ou mesmo eliminar o cursor com um comando só (update/insert/delete) com a sua operação numa vez só.