Questa che segue è la mia procedura, il cursore è una prima bozza che ovviamente non funziona. L'esigenza è prelevare tutte le righe dalla tabella ty_Mail ed aggregarle per destinatario in per poi inviare n email (una per destinatario appunto) con tutte le righe di quel destinatario (l'email deve essere spedita tramite sp_send_dbmail).
[CODE]
DECLARE
@ALLERT INT,
@destinatari varchar (255),
@oggetto varchar (255),
@q_no_rientro varchar (750),
@msg_no_rientro varchar (2000),
@q_no_timbrature varchar (750),
@msg_no_timbrature varchar (2000),
@q_attive varchar (750),
@msg_attive varchar (750),
@q_spedite varchar (750),
@msg_spedite varchar (750)
SET @destinatari = 'pagani@dussmann.it'
SET @oggetto = 'Controllo stato Terminali Presenze (DBFOREW..CTL_STATO_TERMINALI) '
SET @q_no_rientro = 'Select * from ty_segnalazioni where cod_stato = 99'
SET @msg_no_rientro = ' Terminale in attesa di rientro presso Tymbro Service '
SET @q_no_timbrature = 'Select * from ty_segnalazioni where cod_stato = 09'
SET @msg_no_timbrature = 'Terminale attivo senza tibrature '
SET @q_attive = 'Select * from ty_segnalazioni where cod_stato = 10'
SET @msg_attive = ' Terminali attivo '
SET @q_spedite = 'Select * from ty_segnalazioni where cod_stato = 01'
SET @msg_spedite = ' Terminale spedito '
TRUNCATE TABLE TY_MAIL
INSERT INTO TY_MAIL
SELECT DISTINCT
' CDC: '+cdc
+' IDTERM: '+ID_TERM
+' CodStato: '+COD_STATO
+' SEGNALAZIONE: '+@msg_no_rientro
+' DATA: '+CONVERT(varchar,data_evento,105)
+' GIORNI: '+GIORNI
+' RS: '+ISNULL (DES_RS,'N.D.')
+' PREP: '+ISNULL (DES_PREP,'N.D.')
+' ROA: '+ISNULL (DES_ROA,'N.D.')
+' DR: '+ISNULL (DES_DR,'N.D.') SEGNALAZIONE --
,ISNULL (MAIL_RS,isnull (MAIL_PREP,ISNULL (MAIL_ROA,'pippo@email.it'))) MAIL
from bs50.dbforew.dbo.ty_segnalazioni
where cod_stato = 99
INSERT INTO TY_MAIL
SELECT DISTINCT
' CDC: '+cdc
+' IDTERM: '+ID_TERM
+' CodStato: '+cod_stato
+' SEGNALAZIONE: '+@msg_no_timbrature
+' DATA: '+CONVERT(varchar,data_evento,105)
+' GIORNI: '+GIORNI
+' RS: '+ISNULL (DES_RS,'N.D.')
+' PREP: '+ISNULL (DES_PREP,'N.D.')
+' ROA: '+ISNULL (DES_ROA,'N.D.')
+' DR: '+ISNULL (DES_DR,'N.D.') SEGNALAZIONE
,+ISNULL (MAIL_RS,isnull (MAIL_PREP,ISNULL (MAIL_ROA,'pippo@email.it'))) MAIL
from bs50.dbforew.dbo.ty_segnalazioni
where cod_stato = 09
INSERT INTO TY_MAIL
SELECT DISTINCT
' CDC: '+cdc
+' IDTERM: '+ID_TERM
+' CodStato: '+cod_stato
+' SEGNALAZIONE: '+@msg_spedite
+' DATA: '+CONVERT(varchar,data_evento,105)
+' GIORNI: '+GIORNI
+' RS: '+ISNULL (DES_RS,'N.D.')
+' PREP: '+ISNULL (DES_PREP,'N.D.')
+' ROA: '+ISNULL (DES_ROA,'N.D.')
+' DR: '+ISNULL (DES_DR,'N.D.') SEGNALAZIONE
,+ISNULL (MAIL_RS,isnull (MAIL_PREP,ISNULL (MAIL_ROA,'pippo@email.it'))) MAIL
from bs50.dbforew.dbo.ty_segnalazioni
where cod_stato = 10
DECLARE CURMAIL
CURSOR FOR SELECT DISTINCT MAIL
FROM TY_MAIL
OPEN CURMAIL
FETCH NEXT FROM CURMAIL
WHILE @@FETCH_STATUS = 0
DECLARE @MAIL VARCHAR (8000)
BEGIN
SELECT * FROM @MAIL
SELECT SEGNALAZIONE FROM TY_MAIL where MAIL IN (@MAIL)
FETCH NEXT FROM CURMAIL into @MAIL
END
CLOSE CURMAIL
DEALLOCATE CURMAIL

Rispondi quotando