[SQL Mail] loopen van een query

Pagina: 1
Acties:

  • stp_4
  • Registratie: Maart 2003
  • Laatst online: 22-05 12:07
Heb zitten zoeken en testen maar kom er niet helaam uit. Ik ben op zoek naar een methode om met behulp van SQL Mail mail te sturen naar meerdere personen (=variabel). Voor het mailen met SQL Mail gebruik ik:

code:
1
2
3
        EXEC master.dbo.xp_sendmail
        @recipients = 'test@test.com',
        @subject = 'een testbericht'


Nu is het de bedoeling dat ik aan de hand van een query een aantal emailadressen ophaal die voldoen aan bepaalde voorwaarde. Deze emailadressen moeten op een 1 of andere manier als variabelen aan @recipients toegekend worden. Het versturen moet dus in een soort loop gebeuren. Nu ben ik net even bezig geweest met CURSOR FOR. Met behulp van deze methode kan ik in een soort loop wel alle benodigde emailadressen ophalen alleen is het niet mogelijk gebleken om deze als variabelen aan de @recipients te hangen. Heeft iemand een idee hoe dit probleem op te lossen? Wellicht met een andere methode?

stp - PSN ID: stp_4


  • whoami
  • Registratie: December 2000
  • Laatst online: 23:52
Met een stored procedure en wat T-SQL:

code:
1
2
3
4
5
DECLARE @recipients nvarchar;

// loop door je cursor, en maak die recipitients string

EXEC xp_sendmail @recipients, 'testbericht'


(ik heb die code om door je cursor te lopen maar niet getyped , want ik had geen zin om het op te zoeken hoe dat nu ook alweer moet, maar je snapt het idee wel denk ik.

[ Voor 33% gewijzigd door whoami op 07-07-2004 16:20 ]

https://fgheysels.github.io/


  • P_de_B
  • Registratie: Juli 2003
  • Niet online
whoami schreef op 07 juli 2004 @ 16:19:

(ik heb die code om door je cursor te lopen maar niet getyped , want ik had geen zin om het op te zoeken hoe dat nu ook alweer moet, maar je snapt het idee wel denk ik.
Ik had er wel zin in, ben zat van het zoeken hoe ik het simuleren van scans uitzet op een PPC app. :X

code:
1
2
3
4
5
6
7
8
DECLARE cursornaam CURSOR FOR SELECT Naam FROM Tabel
OPEN cursornaam
FETCH NEXT FROM cursornaam INTO @recipient
WHERE @@FETCH_STATUS = 0
BEGIN
    [doe iets]
     FETCH NEXT FROM cursornaam INTO @recipient
END

[ Voor 15% gewijzigd door P_de_B op 07-07-2004 16:24 ]

Oops! Google Chrome could not find www.rijks%20museum.nl


  • stp_4
  • Registratie: Maart 2003
  • Laatst online: 22-05 12:07
Net nadat ik het bericht geplaatst heb, heb ik de volgende methode gevonden.

code:
1
2
3
4
5
6
7
8
9
10
11
WHILE @@FETCH_STATUS = 0
BEGIN
        EXEC master.dbo.xp_startmail
        EXEC master.dbo.xp_sendmail
        @recipients = @username,
        @subject = 'test@test.com'
        EXEC master.dbo.xp_stopmail 
 FETCH NEXT FROM test
    INTO @username

END


Dit werkt prima maar zal zou jou optie ook even proberen omdat in bovenstaand voorbeeld elke keer een nieuwe mailsessie wordt gestart.

stp - PSN ID: stp_4


  • whoami
  • Registratie: December 2000
  • Laatst online: 23:52
Maar dan moet je wel nog iedere @recipient concateneren in een string met daarin alle recipients. :P

code:
1
2
3
4
5
6
7
8
9
10
DECLARE cursorstuff CURSOR FOR
SELECT naam FROM tabel

OPEN cursorstuff
FETCH NEXT FROM crusorstuff INTO @recipient
WHILE @@FETCH_STATUS = 0
BEGIN
   SET  @all_recipients = @all_recipients + ', ' + @recipient
   FETCH NEXT FROM cursorstuff INTO @recipient
END

https://fgheysels.github.io/


  • stp_4
  • Registratie: Maart 2003
  • Laatst online: 22-05 12:07
whoami schreef op 07 juli 2004 @ 16:26:
Maar dan moet je wel nog iedere @recipient concateneren in een string met daarin alle recipients. :P

[code]
dat lijkt me duidelijk, moet denk ik alleen ; gescheiden zijn

[ Voor 45% gewijzigd door stp_4 op 07-07-2004 16:32 ]

stp - PSN ID: stp_4

Pagina: 1