我想创建一个两个存储过程,它们将从stgging数据库中删除超过N天的记录。
两个存储过程都会调用一个包来清理超过N天的数据。
存储过程A将删除表A.Fullimport
&中的记录。 stored proc B将从表B.weeklyimport
中删除记录。
相同的存储过程将从表x和表Y中没有记录的错误表中删除所有记录。
两个存储过程都将接受输入变量@Cleanupdays
。
答案 0 :(得分:6)
基本上,你必须写下这样的东西:
CREATE PROCEDURE dbo.CleanupTableA (@CleanupDays INT)
AS BEGIN
DELETE FROM A.Fullimport
WHERE DATEDIFF(DAY, SomeDateField, GETDATE()) > @CleanupDays
END
或类似的东西 - 如果没有确切的表结构,很难让这完全正确.....
DATEDIFF
函数可以为您提供不同单位的两个日期之间的差异 - 例如在几天内,你想要它(也可能是几周,几个月,一年等)。您基本上要做的就是删除所有具有DATEDIFF
到今天的日期的行,该日期大于传递给存储过程的@CleanupDays
的值。
我不太明白你对错误表的意思......你可能需要澄清一下......
答案 1 :(得分:0)
DELETE FROM TableName WHERE DateColumnName <= DATEADD(day, -30, GETDATE())