3
我試圖在SQL Server 2008中創建一個存儲過程,用於發送插入到出站表中的電子郵件。我正在使用sp_send_dbmail
。它使用遊標循環出站表。我也想刪除包含我已經發送的電子郵件的記錄。調用存儲過程sp_send_dbmail
存儲過程似乎在鎖定記錄。它不會讓我在出站表上執行select語句。
這是存儲過程的基本代碼 - 發佈時存在問題。
Declare EmailCursor Cursor FAST_FORWARD FOR
select email_id, out_type, from_addr, to_addr,
reply_addr, subject, letter_body from outbound_email_queue
set @email_prof = (select email_profile from system_file)
Open EmailCursor
Fetch Next from EmailCursor into @email_type, @from_add, @to_add,
@reply_add, @Mysubject, @message
While @@FETCH_STATUS = 0 BEGIN
exec msdb.dbo.sp_send_dbmail
begin TRAN
DELETE FROM OUTBOUND_EMAIL_QUEUE WHERE EMAIL_ID = @email_id
if (@@error = 0)
begin
commit tran
end
else
begin
rollback tran
select -1
end
fetch next from emailcursor into.
end close emailcursor
deallocate emailcursor
end
嘗試在遊標查詢上添加(NOLOCK)提示。 –