Sybase ASE出现表间循环依赖不能删除的问题

日期: 2008-09-11 作者:fen 来源:TechTarget中国 英文

写了一个简单的脚本来清除一个用户所拥有的表以及存储过程。感兴趣的可以试一下。我是初次写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

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

作者

fen
fen

暂无

相关推荐

  • 趣解数据库市场竞争格局

    数据库咨询顾问Curt Monash对数据库技术的发展格局进行了趣味解读,包括如Oracle、IBM、Sybase鞥厂商之间的竞争关系。

  • SAP利用大数据处理能力,延伸实时数据平台

    SAP公司日前发布了针对Hadoop环境的高级支持与集成,其中包括“大数据”合作伙伴理事会和多个用户展示及基于SAP实时数据平台的相关“大数据”实施。

  • 主流内存数据库指南

    由于内部优化算法更简单,而且执行的CPU指令较少,所以内存数据的速度比基于磁盘的数据库快。访问内存数据可以提高响应速度。

  • 内存数据库巡礼之Sybase ASE

    这是我们关于内存数据库(IMDB)系列文章的第二部分。第一部分我们主要介绍了Oracle TimesTen,而这个部分将深入介绍Sybase ASE。