【问题标题】:Send email via Stored Procedure Fails通过存储过程发送电子邮件失败
【发布时间】:2014-09-04 05:20:58
【问题描述】:
DECLARE 
    @id nvarchar(MAX),
    @Counter int,
    @CheckCount int

DECLARE CC1 CURSOR READ_ONLY
FOR
    SELECT Ename, Ecount
    FROM TestDB.dbo.TestEmail

OPEN CC1

FETCH NEXT FROM CC1 INTO @id, @Counter

WHILE @@FETCH_STATUS = 0
BEGIN
    Begin
    EXEC msdb.dbo.sp_send_dbmail
         @profile_name = 'Bob',
         @recipients = @id,
         @body = 'The stored procedure finished successfully. #$%',
         @subject = 'Automated Success Message' ;

    update TestDB.dbo.TestEmail 
    set Ecount = Ecount + 1 
    where Ename = @id 

    print @id
END

Select 
    @CheckCount = Ecount 
from TestDB.dbo.TestEmail 
where Ename = @id

print @CheckCount

If @CheckCount > 3
Begin
    exec msdb.dbo.sp_update_job @job_id = N'6a81d6b3-af2d-4a27-b688-b9c69098f840', @enabled = 0
    return
    PRINT 'Count reached 3+'
End 

FETCH NEXT FROM CC1 INTO @id, @Counter
END

CLOSE CC1
DEALLOCATE CC1

我有一个表TestEmail 有两列Ename, Ecount。通过使用此表,我正在尝试向用户发送电子邮件。如果Ecount 大于 3,则脚本退出,并且没有任何反应。

一个用户只能收到 3 次电子邮件。但是我的功能失败了,无法弄清楚我哪里出错了。我的脚本没有抛出任何错误,但也不起作用。

【问题讨论】:

  • 这里有一个线索 - 你认为return 有什么作用?我认为马克的编辑说得很清楚......
  • return 立即退出一切。
  • 现在可以了。 :) 如果您在用户电子邮件数量大于三个时提供有关退出此脚本的更多提示,我将不胜感激。我很感谢马克。

标签: tsql stored-procedures sql-server-2008-r2


【解决方案1】:

Marc 的编辑对我有用。在我写这个问题的时候,我对 TSQL 编程一无所知。 虽然,我的问题中的代码运行良好,但这是一个通过 SQl 服务器发送电子邮件的精彩教程。

Send email in SQL server

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-26
    • 2020-09-16
    • 2016-10-30
    相关资源
    最近更新 更多