2010-10-24 4 views
2

Je souhaite créer deux procédures stockées qui supprimeront les enregistrements de plus de N jours d'une base de données de stgging.Processus stocké pour supprimer des enregistrements de plus de N jours

Les deux proc stockés appellera un paquet pour nettoyer les données de plus de N jours.

La procédure stockée A supprimera les enregistrements de la table A.Fullimport & stockée proc B supprimera les enregistrements de la table B.weeklyimport.

Le même proc stocké supprimera tous les enregistrements de la table d'erreur où il n'y a pas d'enregistrement dans le tableau x et tableau Y.

Les deux proc stockées accepte entrée variable @Cleanupdays.

+0

Pouvez-vous nous montrer les structures de table, s'il vous plaît ?? –

+2

Parlez à votre professeur d'anglais sur la façon de formuler une question. C'est, par tous les moyens, pas une question. Indiquer ce que vous voulez faire ne pose pas de question. – TomTom

+1

@ TomTom: c'est son début sur SO; -d – Svisstack

Répondre

5

Fondamentalement, vous devriez écrire quelque chose comme:

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

ou quelque chose comme ça - sans les structures de table exactes, il est vraiment difficile d'obtenir ce tout à fait correct .....

La fonction DATEDIFF peut vous donner la différence entre deux dates dans différentes unités - par exemple en jours, comme vous le voulez (cela pourrait aussi être des semaines, des mois, des années etc.). Tout ce que vous avez à faire est de supprimer toutes les lignes qui ont un DATEDIFF à la date d'aujourd'hui qui est supérieure à la valeur de @CleanupDays passée dans la procédure stockée.

Je ne comprends pas tout à fait ce que vous vouliez dire à propos de la table d'erreur .... vous pourriez avoir besoin de préciser que un peu ...

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