我编写了一个存储过程,其中"我必须比较两个表中的值并将邮件发送给第二个表中不存在的用户。
我必须自动化这份报告。
但问题出现的时候,我正在努力制作邮件正文。
邮件正文取自表record
,即列名REQ_Approval_EMAILBODY
。Recipient 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
答案 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;