Dit hoesje is precies waar loops goed voor zijn (en ontworpen voor).
Aangezien je dingen doet die buiten het bereik van de database vallen, is het volkomen legitiem om er loops voor te gebruiken.
Databases zijn ontworpen om gegevens op te slaan en de query's op deze gegevens uit te voeren, waardoor ze op de meest handige manier worden geretourneerd.
Relationele databases kunnen gegevens retourneren in de vorm van rijensets.
Cursors (en loops die ze gebruiken) zijn ontworpen om een stabiele rijenset te behouden, zodat sommige dingen met elk van de rijen kunnen worden gedaan.
Met "dingen" bedoel ik hier geen pure databasetrucs, maar echte dingen die de buitenwereld beïnvloeden, de dingen waarvoor de database is ontworpen, of het nu gaat om het weergeven van een tabel op een webpagina, het genereren van een financieel rapport of het verzenden van een e-mail.
Het is niet goed om cursors te gebruiken voor pure databasetaken (zoals het transformeren van de ene rij naar de andere), maar het is perfect om ze te gebruiken voor de dingen die je hebt beschreven.
Op sets gebaseerde methoden zijn ontworpen om binnen een enkele transactie te werken.
Als uw set-base-query om de een of andere reden mislukt, keert uw database terug naar de staat waarin deze was, maar u kunt een verzonden e-mail niet "terugdraaien". U kunt uw berichten niet bijhouden in geval van een fout.