【问题标题】:Unable to develop body for email in SQL无法在 SQL 中开发电子邮件正文
【发布时间】:2017-01-19 18:51:18
【问题描述】:

我编写了一个存储过程,其中“我必须比较两个表中的值并将邮件发送给第二个表中不存在的用户。

我必须自动生成此报告。

但是当我尝试制作相同的邮件正文时,问题就来了。

邮件正文应取自表record,即列名REQ_Approval_EMAILBODY。此外,Recipient id 必须取自表记录,即列名REQ_Approval_EMAILID

此查询必须针对表中具有相应电子邮件 ID 的所有记录一一执行。

请帮我整理一下他的。

提前致谢

CREATE PROCEDURE Email_Daily
AS

BEGIN
DECLARE @bodynew VARCHAR(Max)

DECLARE @query1 VARCHAR(Max)

DECLARE @Para VARCHAR(Max)

DECLARE @query2 VARCHAR(Max)

DECLARE @query3 VARCHAR(Max)

DECLARE @query5 VARCHAR(Max)



DECLARE     @Yesterday VARCHAR(50)
SET         @Yesterday = REPLACE(CONVERT(varchar(50),GETDATE()-1,102),'.','-') 


DECLARE     @TODAY_DDMMYYY VARCHAR(50)
SET         @TODAY_DDMMYYY = REPLACE(CONVERT(varchar(50),GETDATE()-1,6),' ','-') 



SELECT  * into #Temp3_New_Table
FROM(
SELECT [MessageIdentifier]
      ,[MessageIdentifier_Archive]
      ,CONVERT(DATE,REQ_SentDate) AS REQ_SentDate
      ,[REQ_Token]
      ,[REQ_Approval_Number]
      ,[REQ_Order_Number]
      ,[REQ_Document_Number]
      ,[REQ_Approval_EMAILID]
      ,[REQ_Approval_EMAILBODY]
      ,[REQ_Approval_EMAIL_Subject]
      ,[RES_Date]
      ,[IsValid]
      ,[Response_MessageIdentifier]
      ,[ReSubmit_Count]
      ,'0' as Flag
  FROM [SAEI].[dbo].[Approval_EMAIL_LOG] 
  where CONVERT(DATE,REQ_SentDate) = @Yesterday
  and res_date is null
  and req_approval_number+req_order_number+req_document_number not in
  (SELECT 
      [RES_Approval_Number]+[RES_Order_Number]+[RES_Document_Number] 
  FROM [SAEI].[dbo].[Approval_Response_WEB_LOG]))as Tr



set @query5='select * from #Temp3_New_Table'


set @para='<p style="font-family:arial; font-size:14px">
            Dear Team,
            </br>
            </br>

            </br>
         </p>'




Set @bodynew = @PARA 


DECLARE @subjects       VARCHAR(200)

DECLARE @FileAttachment VARCHAR(400)

DECLARE @Recipients     VARCHAR(MAX)

DECLARE @copy           VARCHAR(MAX)


set @Recipients='select [REQ_Approval_EMAILID] from #Temp3_New_Table'


        drop table #Temp3_New_Table       
End

【问题讨论】:

  • 想要的输出是什么?
  • 输出结果是正确的..表 B 中不存在三列。但我需要从记录中获取电子邮件正文并将其显示在邮件中..还必须从中获取电子邮件 ID记录自己
  • 不清楚您的要求是什么。您在提供代码的哪一部分需要帮助?
  • @stephen-我需要在 set@para 中显示名为 [REQ_Approval_EMAILBODY] 的列

标签: sql sql-server tsql stored-procedures


【解决方案1】:

试试这个

select @para = concat('<p style="font-family:arial; font-size:14px">Dear Team,</br></br>', [REQ_Approval_EMAILBODY],'</br></p>')
from #Temp3_New_Table 
{where condition}

编辑 如果你想要一个光标,那么你可以试试这个

DECLARE evilCurse CURSOR FOR
    SELECT [REQ_Approval_EMAILID]
          ,[REQ_Approval_EMAILBODY] = concat('<p style="font-family:arial; font-size:14px">Dear Team,</br></br>', [REQ_Approval_EMAILBODY],'</br></p>')
          ,[REQ_Approval_EMAIL_Subject]
      FROM [SAEI].[dbo].[Approval_EMAIL_LOG] 
      where CONVERT(DATE,REQ_SentDate) = @Yesterday
      and res_date is null
      and req_approval_number+req_order_number+req_document_number not in
            (SELECT [RES_Approval_Number]+[RES_Order_Number]+[RES_Document_Number] 
            FROM [SAEI].[dbo].[Approval_Response_WEB_LOG])

OPEN evilCurse
FETCH NEXT FROM evilCurse
INTO @Recipients, @bodynew, @subjects
WHILE @@FETCH_STATUS = 0
BEGIN
    --do what ever you want to do to here 

    FETCH NEXT FROM evilCurse
    INTO @Recipients, @bodynew, @subjects
END

CLOSE evilCurse;
DEALLOCATE evilCurse;

【讨论】:

  • @stephen-我也需要设置相同的光标..你能帮忙做同样的吗.??
  • @stephen-i 需要对多条记录运行此查询。我的意思是电子邮件 ID 和邮件正文必须从选择查询中获取,其中邮件将被发送到 forst 记录,然后是第二个,依此类推..直到最后
猜你喜欢
  • 2014-02-20
  • 1970-01-01
  • 1970-01-01
  • 2011-02-18
  • 2017-01-16
  • 2021-04-17
  • 2019-12-16
  • 2013-09-22
相关资源
最近更新 更多