主题:删除除...之外所有表怎么编写?
cauc
[专家分:0] 发布于 2006-06-12 12:26:00
Dim SQLINSERT$
SQLINSERT = " "
CLDB.DB_Connect
CLDB.OdbcExt (SQLINSERT)
CLDB.DB_Disconnect
MsgBox " 初始化成功! ", vbExclamation + vbOKOnly, "提示"
End Sub
我要实现删除除BIAO和JIEOVER(表名)以外的所有表,而且要将JIEOVER表清空!
谢谢怎么编写SQL?
回复列表 (共2个回复)
沙发
233238447 [专家分:1350] 发布于 2006-06-14 21:58:00
地
板凳
233238447 [专家分:1350] 发布于 2006-06-21 22:51:00
我们想删除,除表a以外的所有表,但是并不知道想删除表的表名!语句如下
--首先要删除表,就要删除它的外键约束
while(1=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(1=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
我来回复