Хранимый процесс для удаления записей старше N дней - PullRequest
3 голосов
/ 25 октября 2010

Я хочу создать две хранимые процедуры, которые будут удалять записи старше N дней из базы данных с разметкой.

Оба хранимых процесса будут вызывать пакет для очистки данных старше N дней.

Сохраненный процесс A удалит записи из таблицы A.Fullimport, а сохраненный процесс B удалит записи из таблицы B.weeklyimport.

Тот же хранимый процесс удалит все записи из таблицы ошибок, в которой нет записи.таблица x и таблица Y.

Оба сохраненных процесса примут входную переменную @Cleanupdays.

Ответы [ 2 ]

6 голосов
/ 25 октября 2010

По сути, вам нужно написать что-то вроде:

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

или что-то в этом роде - без точных структур таблиц действительно трудно получить это полностью правильно .....

Функция DATEDIFF может дать вам разницу между двумя датами в различных единицах - например, в днях, как вы хотите (также могут быть недели, месяцы, год и т. д.). Все, что вам в основном нужно сделать, - это удалить все строки, которые имеют DATEDIFF на сегодняшнюю дату, которая больше, чем значение @CleanupDays, переданное в хранимую процедуру.

Я не совсем понимаю, что вы имели в виду под таблицей ошибок .... вам, возможно, потребуется уточнить это немного ...

0 голосов
/ 22 июля 2014
DELETE FROM TableName WHERE DateColumnName <= DATEADD(day, -30, GETDATE()) 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...