我想创建一个两个存储过程,它们将从stgging数据库中删除N天以前的记录。存储过程删除比N天更早的记录
存储的proc都会调用一个包来清理N天前的数据。
存储过程A将从表A.Fullimport
删除记录&存储过程B将删除表中的记录。
同样的存储过程将删除错误表中的所有记录,其中有没有在表X和Y.表记录
两个存储过程会接受输入变量@Cleanupdays
。
我想创建一个两个存储过程,它们将从stgging数据库中删除N天以前的记录。存储过程删除比N天更早的记录
存储的proc都会调用一个包来清理N天前的数据。
存储过程A将从表A.Fullimport
删除记录&存储过程B将删除表中的记录。
同样的存储过程将删除错误表中的所有记录,其中有没有在表X和Y.表记录
两个存储过程会接受输入变量@Cleanupdays
。
基本上,你不得不写类似:
CREATE PROCEDURE dbo.CleanupTableA (@CleanupDays INT)
AS BEGIN
DELETE FROM A.Fullimport
WHERE DATEDIFF(DAY, SomeDateField, GETDATE()) > @CleanupDays
END
或类似的东西 - 没有确切的表结构,这真的很难让这个完全正确的.....
DATEDIFF
函数可以给你不同单位的两个日期之间的差异 - 例如在几天内,如你所愿(也可能是几周,几个月,一年等)。你所要做的就是删除所有具有DATEDIFF
到今天的日期的行数大于传入存储过程的值@CleanupDays
。
我不太明白你的意思有关错误表什么....你可能需要澄清的是有点...
DELETE FROM TableName WHERE DateColumnName <= DATEADD(day, -30, GETDATE())
,你能否告诉我们的表结构,请? – 2010-10-24 20:22:26
与您的英语老师讨论如何制定问题。无论如何,这不是一个问题。说明你想要做的并不是问一个问题。 – TomTom 2010-10-24 20:22:35
@TomTom:这是她在SO上的首次亮相; -d – Svisstack 2010-10-24 20:37:35