我想创建一个存储过程,允许您从表中删除旧行。 我有一个参数表,其中包含表的名称,表所在的数据库的名称,模式名称,PartDate(日,月,年)和持续时间。
如果一个或多个表存在不同的参数,我想测试参数表。 我删除了存储时间超过3年的行,例如
BEGIN
SET NOCOUNT ON;
Declare @SourceDatabase nvarchar(255)
Declare @SourceSchema nvarchar(255)
Declare @SourceTable nvarchar(255)
Declare @DatePart nvarchar(255)
Declare @Duration bit
Set @SourceDatabase = 'DATABASE'
Set @SourceSchema = 'dbo%'
Set @SourceTable = 'TEXT_OLD'
Set @DatePart = 'Day'
Set @Duration = -75
Declare @SQL NVARCHAR(MAX)
BEGIN TRY
--Delete the rows in the table
SELECT @SQL =N'IF EXISTS (SELECT * FROM CORE.[dbo].[HistoryPeriod]
WHERE SourceSchema = @SourceSchema
AND SourceTable = @SourceTable
--AND Duration = @Duration
-- AND DatePart= @DatePart
)
BEGIN
-- DELETE row of table
EXEC('
DELETE FROM [' + @SourceDatabase + '].[' + @SourceSchema + '].[' + @SourceTable + ']
WHERE TIMESTAMP < DATEADD([' + @DatePart+ '],[' + @Duration+ '],GETDATE())
')
'
EXEC sp_executesql @SQL
END
END
你能帮我吗?