喜欢乡亲,
我在TSQL和游标方面遇到了一些问题。我的光标想要循环遍历mailadresses的列表(视图)。我的代码是这样的:
$function()
所以我的问题是如果视图中有2个mailadresses,光标会运行2次,但我得到相同邮件的2倍而不是2个不同的邮件。 (我是CC的一部分,看它是否有效)
希望有人有一些想法,可以帮助我。
问候,
灵魂
答案 0 :(得分:1)
我已经解决了你的问题,我也执行了你使用的游标,它运行正常。根据我的理解,下面的代码可能会产生问题。
SET @MyResult = Replace(@MyResult,'defg',@emailAddress)
我认为由于问题正在发生,它无法替换上一次迭代的电子邮件地址。看来你想在这里用当前迭代的电子邮件地址替换上一次迭代的电子邮件地址,以便下面的代码可能有所帮助。
SET @oldEmailAddress = 'defg'
set @sqlstatement = 'Declare cur CURSOR FOR SELECT ' + @col + '
FROM ' + @view + ' group by ' + @col
exec sp_executesql @sqlstatement
OPEN cur
FETCH NEXT FROM cur INTO @emailAddress
WHILE @@FETCH_STATUS = 0 BEGIN
SET @MyRecipients = @emailAddress;
SET @MyResult = Replace(@MyResult,@oldEmailAddress,@emailAddress)
SELECT @MyResult
IF @@ROWCOUNT > 0
begin
EXEC dbo.[Excel] @html = @html OUTPUT,@query = @MyResult
IF @html != ''
begin
EXEC msdb.dbo.sp_send_dbmail
@profile_name = 'Operator',
@recipients= @MyRecipients,
@body = @html,
@body_format = 'HTML',
@subject= @MySubject,
@copy_recipients = @MyCC
;
END
END
SET @oldEmailAddress = @emailAddress
FETCH NEXT FROM cur INTO @emailAddress
END
Close cur
DEALLOCATE cur