无法在SQL中开发电子邮件正文

时间:2017-01-19 09:36:26

标签: sql sql-server tsql stored-procedures

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

我必须自动化这份报告。

但问题出现的时候,我正在努力制作邮件正文。

邮件正文取自表record,即列名REQ_Approval_EMAILBODYRecipient id也必须从表记录中取出,即名称REQ_Approval_EMAILID。< / p>

此查询必须逐个执行所有记录,并使用表中的相应电子邮件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

1 个答案:

答案 0 :(得分:0)

试试这个

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;