根据其他表的名称删除表

时间:2016-06-27 22:19:47

标签: sql

目前,我基本上就像丢桌子一样 放表     scratch..TableName

如果我在其他单独的表中有所有表的名称,那么我可以通过加入而不是每次复制和粘贴名称来执行删除表吗?

所以我想做这样的事情..但我不知道如何将其写入SQL。我确实使用2008版。 表名与TableName表匹配,然后从头开始删除数据库。

1 个答案:

答案 0 :(得分:0)

您可以轻松创建一个循环遍历表行的游标,并为每个表动态创建并执行drop语句。这样的事情可以解决问题:

DECLARE @i_Current_Drop_Statement NVARCHAR(MAX)

DECLARE Drop_Table_Statements CURSOR LOCAL FAST_FORWARD
    FOR 
    SELECT N'DROP TABLE ' + QUOTENAME(SCHEMA_NAME(t.schema_id)) + '.' + QUOTENAME(t.name)
    FROM sys.tables t --Or replace this with your table that contains the tables to drop

OPEN Drop_Table_Statements
FETCH NEXT FROM Drop_Table_Statements INTO @i_Current_Drop_Statement

WHILE @@FETCH_STATUS = 0
BEGIN
    EXEC sp_executesql @i_Current_Drop_Statement

    FETCH NEXT FROM Drop_Table_Statements INTO @i_Current_Drop_Statement
END

CLOSE Drop_Table_Statements
DEALLOCATE Drop_Table_Statements