创建用于为创建的文档设置提醒的存储过程

Create Stored procedure for setting reminder for document created

我想为

创建一个存储过程
  1. NStatusFlag 不应等于 514
  2. 的文档

AND

如果文档与用户在一起超过 3 天,它还应该向相应用户发送提醒,如果超过 5 天,则还应该将其发送给其上级

日期应使用 table 的 U_datetime 和系统的 SYSTEM 日期计算。

我的NStatusFlag建议打开所有文档。

我在下面试过了。

ALTER PROCEDURE GET_INWARD_REMINDER_REPORT
AS
BEGIN
    Select * from inward_doc_tracking_trl 
        where NStatus_flag <> 5
        and NStatus_flag <> 14
END
GO

所以我得到了所有打开的文档,如下所示

But I am stuck how to get the all user by comparing with the date and send the reminders.

此外,我将从 inward_doc_tracking_hdr table.

中获取分配文档的用户名

注意 inward_doc_tracking_hdr table mkeyinward_doc_tracking_trl [=68= 中的 ref_mkey 有关].

请帮助我。

更新

我从这个查询中得到了所有的用户

ALTER PROCEDURE GET_INWARD_REMINDER_REPORT
AS
BEGIN

    Select distinct a.mkey, b.mkey, a.first_name + ' ' + a.last_name from user_mst a
    inner join inward_doc_tracking_hdr b 
    on a.mkey = b.User_Id
END
 GO

更新以获得高级名称

select * from inward_doc_tracking_hdr order by mkey desc  -- here I get To_User
  select * from user_mst where mkey = 187         -- here I get To_User
 select Reporting_To,* from emp_mst where mkey = 122 -- here I get Senior

此查询获取拥有 3 天或更长时间文档的人员的跟踪行(您可能需要注意时间部分)。请测试看看这是否得到你想要的。

    Select TL.*
    from inward_doc_tracking_trl TL
    where TL.NStatus_flag NOT IN (5,14)
    and TL.U_datetime <= DATEADD(d, -3, GETDATE())

如果逾期 3 天或 5 天,则此查询会计算出来,如果逾期 3 天,则填充第二列:

    Select 
    TL.*, 
    U.UserName,
    CASE 
    WHEN TL.U_datetime <= DATEADD(d, -5, GETDATE()) 
    THEN M.Reporting_To
    ELSE NULL 
    END SeniorName
    from inward_doc_tracking_trl TL
    INNER JOIN inward_doc_tracking_hdr TH
    ON TH.mkey = TL.ref_mkey
    INNER JOIN user_mst U
    ON TH.User_Id = U.mkey
    INNER JOIN emp_mst M
    ON M.mkey = U.employee_mkey
    where TL.NStatus_flag NOT IN (5,14)
    and TL.U_datetime <= DATEADD(d, -3, GETDATE())

你每天都需要运行,我建议里面安排一个SQL Agent Job

关于'sending a reminder',那么假设这是邮箱,建议你先设置SQL邮箱:https://msdn.microsoft.com/en-au/library/hh245116.aspx

然后使用sp_send_dbmailhttps://msdn.microsoft.com/en-au/library/ms190307.aspx发送邮件

您还需要在游标中使用上述查询并将其输入到您的 sp_send_dbmail How to send multiple emails from sql server database using sp_send_dbmail procedure

尝试一下,如果愿意,可以提出更多问题