我已经做了一些搜索,没有找到我正在寻找的东西。我读过关于EXEC(@variable)的内容,这可能是我想要的,但是我无法让它工作。
这个想法是,有多个小组,我将根据发生的位置发送电子邮件。所以我需要将这些信息存储到一个变量中,然后我可以将其传递给sp_send_dbmail中的@recipients。
我正在使用一个案例,这很好,但现在我们添加的功能,我们只想根据他们正在工作的转移将电子邮件发送给某些用户。例如,第3班不想知道班次1发生的问题。
为此,我设置了另一个案例来基于shift声明一个变量,并删除了我的原始案例,并为shift a,b,c等创建了一个配置表。所以我要做的是< / p>
SELECT @shift FROM table发生此缺陷的位置。
这是我试图做的不起作用。
SET @EmailRecipients = 'SELECT' + @EmailRecipientsCase + 'FROM ScrapReasonProcessGroups WHERE ID = @ProcessCounter'
SET @EmailRecipients = EXEC(@EmailRecipients)
答案 0 :(得分:2)
使用没有动态SQL的CASE?
SELECT @EmailRecipients = CASE @EmailRecipientsCase
WHEN 'shifta' THEN ShiftA
WHEN 'shiftb' THEN ShiftB
WHEN 'shiftc' THEN ShiftC
END
FROM ScrapReasonProcessGroups
WHERE ID = @ProcessCounter
答案 1 :(得分:1)
假设您要从该查询中获取多个电子邮件地址,您需要将这些结果存储在临时表中。
CREATE TABLE #tmpEmail (
EmailAddress varchar(200)
)
SET @EmailSQL = 'SELECT ' + @EmailRecipientsCase + ' FROM ScrapReasonProcessGroups WHERE ID = ' + @ProcessCounter
INSERT INTO #tmpEmail
(EmailAddress)
EXEC (@EmailSQL)