以下查询有效,但未提供所有正确信息。如果我的表有多行符合选择条件,则该过程会为所选的每一行成功发送1封电子邮件,但所有电子邮件都引用相同的“命令”。 UID#始终是所选多行中的最后一行。每封电子邮件都应反映不同的UID#。我错过了一些东西,但无法弄清楚是什么。
DECLARE
@CommandUIDNo as varchar(8)
,@Command as varchar(300)
,@ProcessedFlag as varchar(2)
,@CCEmail as varchar(100)
,@NotificationEmail as varchar(100)
,@EmailSubject as varchar(100)
,@EmailMessage as varchar(1000)
,@DateCreated as varchar(20)
,@DateModified as varchar(20)
declare send_unprocessed_emails cursor for
select xp_cmdshell_command_uid from sam_xp_cmdshell_command where processed_flag = 'N'
open send_unprocessed_emails
fetch next from send_unprocessed_emails into @CommandUIDNo
while @@fetch_status = 0
begin
SELECT
@CommandUIDNo = xp_cmdshell_command_uid
,@Command = xp_cmdshell_command
,@ProcessedFlag = processed_flag
,@CCEmail = 'test@test.com'
,@NotificationEmail = 'test@test.com'
,@DateCreated = date_created
,@DateModified = date_last_modified
FROM
sam_xp_cmdshell_command
where
processed_flag = 'N'
SELECT @EmailSubject = 'Unprocessed Jobs Pending in sam_xp_cmdshell Table'
select @EmailMessage =
'Command UID No:' + char(9) + char(160) + char(9) + char(160) + @CommandUIDNo + '<br><br>' +
'Command Text:' + char(9) + char(160) + char(9) + char(160) + @Command + '<br><br>' +
'<B><font color="red">Processed Flag:'+ char(9) + char(160) + char(9) + char(160) + @ProcessedFlag + '</font></B><br><br>' + +
'Date Created:' + char(9) + char(160) + char(9) + char(160) + @DateCreated + '<br>' +
'Date Last Modified:' + char(9) + char(160) + char(9) + char(160) + @DateModified
EXEC msdb..sp_send_dbmail @Recipients = @NotificationEmail, @copy_recipients = @CCEmail, @Subject = @EmailSubject, @body = @EmailMessage, @body_format = 'HTML'
fetch next from send_unprocessed_emails into @CommandUIDNo
end
close send_unprocessed_emails
deallocate send_unprocessed_emails