创建用于为创建的文档设置提醒的存储过程
Create Stored procedure for setting reminder for document created
我想为
创建一个存储过程
-
NStatusFlag
不应等于 5
和 14
的文档
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 mkey
与 inward_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_dbmail
https://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
尝试一下,如果愿意,可以提出更多问题
我想为
创建一个存储过程-
NStatusFlag
不应等于5
和14
的文档
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 mkey
与 inward_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_dbmail
https://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
尝试一下,如果愿意,可以提出更多问题