批量删除表而不使用游标

时间:2014-10-16 07:43:35

标签: sql-server-2008-r2

我想删除所有来自此查询的表。可以有多个表。

此查询将返回舞台数据库的表名。

SELECT name FROM sys.objects WHERE create_date < GETDATE()-7

如何在不使用游标的情况下删除表?

1 个答案:

答案 0 :(得分:0)

假设您想要获取7天或更长时间的所有表的名称..

SELECT name FROM sys.tables WHERE DATEDIFF(day,create_date,GETDATE()) >= 7
对于你应该使用sys.tables

的对象,

sys.objects不适用于表

和无光标删除..

自行承担使用风险

BEGIN TRAN
DECLARE @DropTables NVARCHAR(MAX)
SET @DropTables = ''

SELECT @DropTables = @DropTables + 
    'DROP TABLE '+name+CHAR(10)
FROM sys.tables 
WHERE DATEDIFF(day,create_date,GETDATE()) >= 7
EXEC(@DropTables)
ROLLBACK