如何清除通过 SQL 中的 INFORMATION_SCHEMA.TABLES 查询选择的所有表?
How to clear all tables selected through a INFORMATION_SCHEMA.TABLES query in SQL?
结果是包含数百个表的列表,这些表具有应清除的无用行。如果不手动输入每一个,我怎么能这样做呢?
不尝试删除 所有 表,只删除通过 WHERE AND
选择的表
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
子句的表中删除记录时,要非常小心。
结果是包含数百个表的列表,这些表具有应清除的无用行。如果不手动输入每一个,我怎么能这样做呢?
不尝试删除 所有 表,只删除通过 WHERE AND
选择的表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
子句的表中删除记录时,要非常小心。