写了一个简单的脚本来清除一个用户所拥有的表以及存储过程。感兴趣的可以试一下。我是初次写ASE下边的存储过程,肯定有更好的解决方法。本想直接在存储过程里drop东西,可惜失败了。这个存储过程只是生成了清除表的sql脚本。拷贝再执行即可。
具体示例如下:
create procedure cleardb(@username varchar(32) in)
as
begin
declare @strdrop varchar(512)
select @strdrop=’’
set @strdrop=’setuser ’’’ + @username + ’’’’
print @strdrop
/* 1begin drop all constraints */
declare @tname varchar(128), @tableid int, @cid int
declare @cname varchar(128)
set @strdrop=’’
declare c_constraints cursor for select a.id, c.tableid, a.name from sysobjects a, sysusers b, sysconstraints c where a.type=’RI’ and a.uid=b.uid and b.name=@username and c.constrid=a.id
open c_constraints
fetch next from c_constraints into @cid, @tableid, @cname
while (@@sqlstatus=0)
begin
select @tname=name from sysobjects where id=@tableid
set @strdrop=’alter table ’ + @username + ’.’ + @tname + ’ drop constraint ’ + @cname
print @strdrop
fetch next from c_constraints into @cid, @tableid, @cname
end
close c_constraints
deallocate cursor c_constraints
/*2 drop tables */
set @tname=’’
set @strdrop=’’
declare c_tables cursor for select a.name from sysobjects a, sysusers b where a.type=’U’ and a.uid=b.uid and b.name=@username
open c_tables
fetch next from c_tables into @tname
while (@@sqlstatus = 0)
begin
set @strdrop = ’drop table ’ + @username + ’.’ + @tname
print @strdrop
fetch next from c_tables into @tname
end
close c_tables
deallocate cursor c_tables
/*3 drop procedures*/
declare @procname varchar(128)
declare c_procs cursor for select a.name from sysobjects a, sysusers b where a.type=’P’ and a.uid=b.uid and b.name=@username
open c_procs
fetch next from c_procs into @procname
while (@@sqlstatus=0)
begin
set @strdrop = ’drop procedure ’ + @username + ’.’ + @procname
print @strdrop
fetch next from c_procs into @procname
end
close c_procs
deallocate cursor c_procs
set @strdrop=’setuser ’
print @strdrop
end
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】
微信公众号
TechTarget
官方微博
TechTarget中国
相关推荐
-
趣解数据库市场竞争格局
数据库咨询顾问Curt Monash对数据库技术的发展格局进行了趣味解读,包括如Oracle、IBM、Sybase鞥厂商之间的竞争关系。
-
SAP利用大数据处理能力,延伸实时数据平台
SAP公司日前发布了针对Hadoop环境的高级支持与集成,其中包括“大数据”合作伙伴理事会和多个用户展示及基于SAP实时数据平台的相关“大数据”实施。
-
主流内存数据库指南
由于内部优化算法更简单,而且执行的CPU指令较少,所以内存数据的速度比基于磁盘的数据库快。访问内存数据可以提高响应速度。
-
内存数据库巡礼之Sybase ASE
这是我们关于内存数据库(IMDB)系列文章的第二部分。第一部分我们主要介绍了Oracle TimesTen,而这个部分将深入介绍Sybase ASE。