我已经完成了一些搜索,没有什么会提供我正在寻找的内容。我读过关于EXEC(@variable),这可能是我想要的,但我不能得到它的工作。动态选择语句,将结果放入变量
这个想法是,我将根据发生的事情发送电子邮件给多个组。所以我需要将这些信息存储到一个变量中,然后我可以将它传递给sp_send_dbmail中的@recipients。
我为此使用了一个很好的例子,但现在我们添加了功能,我们只是想根据他们正在工作的班次向某些用户发送电子邮件。例如,第3班不想知道移位1发生的问题。
为此,我建立了另一个案例来声明基于shift的变量,并删除了我的原始案例并创建了一个配置换班a,b,c等。所以我想要做的是
SELECT @shift FROM table WHERE location此缺陷发生的位置。
这是我正在尝试做哪些不工作。
SET @EmailRecipients = 'SELECT' + @EmailRecipientsCase + 'FROM ScrapReasonProcessGroups WHERE ID = @ProcessCounter'
SET @EmailRecipients = EXEC(@EmailRecipients)
这种方法绝对是最有意义的,看起来应该可以工作。唯一的问题是它出于某种原因不喜欢这个,“必须声明标量变量”@ProcessCounter“。 这个变量肯定已经声明,并且一直在工作,没有任何问题,直到我做出这个改变 – Tom 2011-06-10 14:27:33
@Tom:它是如果@EmailRecipientsCase为'1; DELETE Users - '...经典SQL注入 – gbn 2011-06-10 14:29:49
让我的代码工作,我忽略了投射整数 SET @EmailRecipients ='SELECT'+ @ EmailRecipientsCase + 'FROM ScrapReasonProcessGroups WHERE ID =' +铸造(@ProcessCounter为varchar) \t \t \t \t \t \t \t \t INSERT INTO @tmpEmail(EmailAddress的) \t \t \t \t \t \t \t \t \t EXEC(@EmailRecipients)\t \t \t \t \t \t \t \t \t \t \t \t \t \t SET @EmailRecipients =(SELECT * FROM @tmpEmail) \t \t \t \t \t \t \t \t DELETE FROM @tmpEmail – Tom 2011-06-10 14:43:38