需求:批量删除 tblLogoutLog_20210511至tblLogoutLog_20210808的表
语句:
USE DFUserLog
DECLARE @nBeginDate AS INT = 20210511;
DECLARE @nEndDate AS INT = 20210808;
DECLARE @year AS INT = 0;
DECLARE @month AS INT = 0;
DECLARE @day AS INT = 0;
DECLARE @temp AS INT = 0;
DECLARE @tableName AS NVARCHAR(100) = N'';
DECLARE @sql AS NVARCHAR(1024) = N'';
DECLARE @nIndex AS INT = 0;
SET @nIndex = @nBeginDate;
WHILE @nIndex <= @nEndDate
BEGIN
SET @tableName = N'tblLogoutLog_' + CONVERT(NVARCHAR(10), @nIndex);
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(@tableName) AND type in (N'U'))
BEGIN
SET @sql = N'DROP TABLE ' + @tableName;
EXEC(@sql);
END
SET @temp = @nIndex;
SET @year = @temp / 10000;
SET @temp = @temp - @year * 10000;
SET @month = @temp / 100;
SET @day = @temp - @month * 100;
SET @day = @day + 1;
IF @day > 31
BEGIN
SET @day = 1;
SET @month = @month + 1;
END
IF @month > 12
BEGIN
SET @month = 1;
SET @year = @year + 1;
END
SET @nIndex = @year * 10000 + @month * 100 + @day;
END