SQL fetch next无法按预期工作

时间:2017-03-16 18:59:55

标签: sql-server-2005

以下查询有效,但未提供所有正确信息。如果我的表有多行符合选择条件,则该过程会为所选的每一行成功发送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 

0 个答案:

没有答案