sql >> Base de Datos >  >> RDS >> Sqlserver

Enviar correo electrónico para cada fila en un conjunto de resultados

Este caso es exactamente para lo que son buenos los bucles (y para lo que están diseñados).

Dado que hace cosas que quedan fuera del alcance de la base de datos, es perfectamente legítimo usar bucles para ellas.

Las bases de datos están diseñadas para almacenar datos y realizar consultas contra estos datos que los devuelven de la manera más práctica.

Las bases de datos relacionales pueden devolver datos en forma de conjuntos de filas.

Los cursores (y los bucles que los usan) están diseñados para mantener un conjunto de filas estable para que se puedan hacer algunas cosas con cada una de sus filas.

Por "cosas" aquí no me refiero a trucos puros de bases de datos, sino a cosas reales que afectan el mundo exterior, las cosas para las que está diseñada la base de datos, ya sea mostrar una tabla en una página web, generar un informe financiero o enviar un correo electrónico.

Es malo usar cursores para tareas puras de bases de datos (como transformar un conjunto de filas en otro), pero es perfectamente bueno usarlos para cosas como la que describiste.

Los métodos basados ​​en conjuntos están diseñados para funcionar en una sola transacción.

Si su consulta de base establecida falla por algún motivo, su base de datos volverá al estado en el que estaba antes, pero no podrá "revertir" un correo electrónico enviado. No podrá realizar un seguimiento de sus mensajes en caso de error.