如何清除通过SQL中的INFORMATION_SCHEMA.TABLES查询选择的所有表?

时间:2015-07-07 15:01:21

标签: sql select sql-delete information-schema

结果是一个包含应该清除的无用行的几百个表的列表。如果不手动输入每一个,我怎么能这样做?

不尝试删除所有表,只删除通过WHERE AND

选择的表

1 个答案:

答案 0 :(得分:0)

DECLARE @SQL_String NVARCHAR(MAX)
DECLARE @TableName  NVARCHAR(MAX)

DECLARE db_cursor CURSOR FOR
    -- You might want to modify this in order to get only 
    -- a specific subset of tables
    SELECT TABLE_NAME 
    FROM INFORMATION_SCHEMA.TABLES
OPEN db_cursor   

FETCH NEXT FROM db_cursor 
INTO @TableName

WHILE @@FETCH_STATUS = 0
BEGIN 

    SET @SQL_String = N'DELETE * FROM ' + QUOTENAME(@TableName)
    EXEC sp_executesql @SQL_STRING

    FETCH NEXT FROM db_cursor 
    INTO @TableName        
END   

CLOSE db_cursor   
DEALLOCATE db_cursor

这样的事情应该可以解决问题。

与往常一样,当删除没有WHERE子句的表中的记录时,要非常小心。