Я пытаюсь создать хранимую процедуру в 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) намек на запрос курсора. –