想删除除表a以外的所有表,但是并不知道想删除表A的SQL Server表名,实现这样功能的语句应该如何写呢?接下来的SQL server内容就为您介绍这种不用知道SQL Server表名就可以删除该表以外的所有表的方法,供您参考。
--首先要删除表,就要删除它的外键约束
while(11=1) begin declare @exit int --判断是否还有外键约束 declare @constr_id varchar(200) --获取外键约束的ID declare @table_id varchar(200) --获取设外键的表的ID declare @table varchar --获取设外键的表名 declare @constr_name varchar(100) --获取约束名 declare @str varchar(100) --删除表语句字符串 declare @drop_constr varchar(100) --删除约束字符串 declare @conn_str varchar(2000) --将删除语句连接起来的字符串 select top 1 @constr_id=id,@constr_name=name from sysobjects where type='f' select @table_id=fkeyid from sysforeignkeys where constid=@constr_id select @table=name from sysobjects where id=@table_id select @exit=count(*) from sysobjects where type='f' if(@exit!=0) begin set @str='alter table' set @drop_constr='drop constraint' set @conn_str=@str+' '+@table+' '+@drop_constr+' '+@constr_name exec(@conn_str) end else break end if exists(select * from sysobjects where name='proc_drop_table' and type='p') drop proc proc_drop_table go create proc proc_drop_table @table_name varchar(200) --指定你不想删除的表名 as while(11=1) begin declare @str varchar(200) declare @exit int set @str='drop table' select top 1 @str=@str+' '+name from sysobjects where type='u' and name!=@table_name select @exit=count(*) from sysobjects where type='u' and name!=@table_name print @str if(@exit!=0) exec(@str) else begin break return end end go exec proc_drop_table a
以上就是不用知道SQL Server表名就可以删除该表以外的所有表的方法介绍。