我知道在某些情况下已经提出这个问题,但我无法理解他们的工作方式。如果这个问题有很多有用的答案,那么请向我投票,但请在做之前链接相关问题。
我正在尝试编写一个将在批处理文件中运行的查询,以自动删除名称中包含特定字符串的表。例如,当我运行批处理文件时,我希望它查找文件中可能包含ABCDir的表。我尝试过各种各样的方法让它工作但还没有成功。
我知道这与我正在尝试做的很接近。或者我想它可能会离开大声笑。
DECLARE db_cursor CURSOR FOR
DELETE name FROM sys.database
WHERE name LIKE '%ABCDir%'
答案 0 :(得分:2)
警告这是一种非常危险的做法。考虑重命名表而不是删除。
<强>答案强>
您必须创建动态SQL作为如何删除表的示例(我无法自己编写DROP DATABASE
)
Declare @strSQL nVarChar (Max) = ';
'
select @strSQL = @strSQL + 'Drop Table ' + T.TABLE_SCHEMA + '.'+ TABLE_NAME + ';
'
From INFORMATION_SCHEMA.TABLES T
Where Table_Name Like '%ABC1234%'
Print @strSQL
Exec Sp_ExecuteSQL @strSQL