我已經完成了一些搜索,沒有什麼會提供我正在尋找的內容。我讀過關於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