CREATE PROCEDURE usp_DiabloFailedRowDetail_GenerateEmail
AS
SET NOCOUNT ON
DECLARE @Id INT,
@recipients NVARCHAR(4000),
@subject NVARCHAR(4000),
@body NVARCHAR(MAX),
@SQL NVARCHAR(MAX),
@Info VARCHAR(MAX),
@ProcessStartTime DATETIME2(2)
WHILE 1 = 1
BEGIN
SELECT @Id = a.Id,
@recipients = a.recipients,
@subject = subject,
@body = body,
@SQL = SQL,
@ProcessStartTime = GETDATE(),
@Info = ''
FROM dbo.DiabloFailedRowDetail a
INNER JOIN (SELECT TOP 1
Id
FROM dbo.DiabloFailedRowDetail
WHERE Processed = 0
ORDER BY Id) b ON a.Id = b.Id
IF @@ROWCOUNT = 1
BEGIN
EXEC SP_EXECUTESQL
@SQL,
N'@Output VARCHAR(MAX) OUTPUT',
@Info OUTPUT
SET @body = @body + '
' + @Info
EXEC msdb.dbo.sp_send_dbmail
@recipients = @recipients,
@subject = @subject,
@body = @body
UPDATE dbo.DiabloFailedRowDetail
SET Processed = 1,
ProcessStartTime = @ProcessStartTime,
ProcessEndTime = GETDATE(),
Info = @Info
WHERE Id = @id
END
ELSE
BEGIN
RETURN
END
END