En général, l'ouverture et la fermeture séquentielle de plusieurs curseurs ne posent aucun problème. Vous pouvez considérer le curseur comme un pointeur vers un ensemble de résultats de requête (et il s'agit d'un ensemble de pointeurs vers des données mises en cache). Ouvrir un curseur alloue un pointeur et en fermer un libère la mémoire.
En général, je pense que la propreté logique est la meilleure ici, donc avoir un curseur par requête est la voie à suivre.