2010-10-24 56 views
2

我想创建一个两个存储过程,它们将从stgging数据库中删除N天以前的记录。存储过程删除比N天更早的记录

存储的proc都会调用一个包来清理N天前的数据。

存储过程A将从表A.Fullimport删除记录&存储过程B将删除表​​中的记录。

同样的存储过程将删除错误表中的所有记录,其中有没有在表X和Y.表记录

两个存储过程会接受输入变量@Cleanupdays

+0

,你能否告诉我们的表结构,请? – 2010-10-24 20:22:26

+2

与您的英语老师讨论如何制定问题。无论如何,这不是一个问题。说明你想要做的并不是问一个问题。 – TomTom 2010-10-24 20:22:35

+1

@TomTom:这是她在SO上的首次亮相; -d – Svisstack 2010-10-24 20:37:35

回答

5

基本上,你不得不写类似:

CREATE PROCEDURE dbo.CleanupTableA (@CleanupDays INT) 
AS BEGIN 
    DELETE FROM A.Fullimport 
    WHERE DATEDIFF(DAY, SomeDateField, GETDATE()) > @CleanupDays 
END 

或类似的东西 - 没有确切的表结构,这真的很难让这个完全正确的.....

DATEDIFF函数可以给你不同单位的两个日期之间的差异 - 例如在几天内,如你所愿(也可能是几周,几个月,一年等)。你所要做的就是删除所有具有DATEDIFF到今天的日期的行数大于传入存储过程的值@CleanupDays

我不太明白你的意思有关错误表什么....你可能需要澄清的是有点...

0
DELETE FROM TableName WHERE DateColumnName <= DATEADD(day, -30, GETDATE())