22,301
社区成员




--得到所有的表名
declare @sql varchar(8000)
select 'DELETE FROM ' + NAME FROM SYSOBJECTS WHERE XTYPE='U' AND NAME LIKE 'TMP_%'
--这样可以一下得出所有要删除的语句 如何执行啊 准备做成JOB 自动来删除
用delete的方式
exec sp_MSforeachtable 'Delete from ? where object_name(object_id(''?'')) like ''%tmp[_]%'''
用truncate的方式
exec sp_MSforeachtable 'if object_name(object_id(''?'')) like ''%tmp[_]%'' truncate table ?'
DELETE FROM tmp_1251
DELETE FROM tmp_1252
DELETE FROM tmp_1253
DE
[/quote]
你可以用游标呀,像7楼给出的语句
你也可以把这print出来的125条先执行删除,多执行两次也可以删掉所有表
DELETE FROM tmp_1251
DELETE FROM tmp_1252
DELETE FROM tmp_1253
DE
declare @tsql varchar(6000),@tabname varchar(200)
declare ap scroll cursor for
select name from sys.tables where name like 'tmp[_]%'
open ap
fetch first from ap into @tabname
while(@@fetch_status<>-1)
begin
select @tsql='truncate table '+@tabname
exec(@tsql)
fetch next from ap into @tabname
end
close ap
deallocate ap
DELETE FROM tmp_0122
DELETE FROM tmp_0123
DELETE FROM tmp_0124
DELETE FROM tmp_0125
DELET
数据库中一共有近300个 tmp_开头的表 这才显示了125条
这样如何搞啊DECLARE @sql VARCHAR(MAX) = ''
SELECT @sql = @sql + 'DELETE FROM ' + NAME + CHAR(10) FROM SYS.TABLES
PRINT @sql
EXEC(@sql)
declare @str varchar(1000)='';
set @str='select * from master.dbo.spt_values'
Exec (@str)