death_nemesis para funciones que retornan varios registros los cursores explicitos (Los que haz aplicado) son supremamente eficientes. cuando utilizas una variable y la volcas con la palabra INTO directamente de la consulta se le conocen como cursores implicitos. Hace unos años estaba reacio a aprender el tema de cursores y siempre me valía de las variables record y los cursores implicitos para recorrer mis registros. En una aplicaión que hice en su momento mejoré el rendimiento de 5 minutos que tardaba con cursores implicitos a 15 segundos utilizando cursores explicitos.
vale la pena profundizar el tema
saludos