2009-12-01 8 views
0

J'ai cherché un peu sur Google mais je n'arrive pas à trouver une réponse à cela. J'essaye d'utiliser le courrier de base de données dans SQL Server 2005 dans une procédure stockée où l'idée est d'envoyer le courrier séparé pour chaque rangée dans une requête, chaque courrier dépendant d'une adresse résidant dans les rangées. Imaginez par exemple 15 - 50 lignes de commandes de produits avec les données suivantes: ID, CustomerName, CustomerEmail, ProductName, ProductCategory. Chacune des lignes contient l'email du client ainsi que la catégorie de produit. J'ai besoin d'envoyer un email de confirmation à chacun de ces clients en utilisant leurs données personnelles spécifiques à leurs propres lignes, ainsi que le courrier de la commande réelle à différentes personnes de l'entreprise en fonction de la catégorie de produit.SQL Exécuter pour chaque ligne de résultats

Comment envoyer un courrier électronique de base de données de manière dynamique comme ceci?

Merci d'avance!

Édition 1: Les jeux de données etc. ne sont pas une option, cela doit être exécuté exclusivement sur SQL Server 2005. Je suppose que je vais devoir regarder dans les curseurs alors.

Répondre

0

Non, ce n'est pas possible. L'envoi de courrier de base de données est un appel d'une procédure stockée, ce qui n'est pas autorisé dans les requêtes ni dans les fonctions.

Vous devez envoyer chaque courrier un par un. Vous pouvez utiliser un curseur sur le serveur dans une procédure stockée ou itérer la table dans le client.

+0

Revenez à ceci. Oui merci pour cela, depuis un an maintenant je n'avais aucune idée de ce que sont les curseurs mais j'ai réussi à faire marcher le truc en un tournemain après votre suggestion. :) – Kahn

0

Obtenez le tableau dans la mémoire à l'aide d'un DataSet et que l'exécution foreach DataRow, aller chercher le courrier et l'envoyer ...

0

Voulez-vous dire à chaque fois qu'une nouvelle ligne est ajoutée (par exemple l'ordre est placé)? Si c'est le cas, vous pouvez utiliser un Trigger pour envoyer l'e-mail chaque fois qu'une ligne est insérée ou mise à jour.

+0

Un travail est exécuté toutes les quelques heures environ et doit être vérifié sur toutes les nouvelles lignes. Je suppose qu'un déclencheur est une bonne alternative pour faire cela, mais je ne suis pas sûr de savoir comment cela réagirait à l'énorme somme d'autres données qui doivent être là avant que les données soient suffisamment complètes pour être envoyées. La table actuelle a des relations un peu partout, donc en fonction des choses, le déclencheur pourrait se déclencher trop tôt. – Kahn

Questions connexes