tempad
ReadyGo!技术成就梦想 >>数据库 >> Sybase ASE出现表间循环依赖不能删除的问题

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

ReadyGo!技术成就梦想 网络搜索 efish 2008-8-17 17:04:16

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

(责任编辑:卢兆林)

责任编辑: efish 参与评论 查找更多:
相关文章
初学者必读:有关Sybase ASE数据库的来历 初学者必读:有关Sybase ASE数据库的来历
Sybase ASA中查询元信息的几个常用SQL函数 Sybase ASA中查询元信息的几个常用SQL函数
经验总结:Sybase ASA9/ASA10的使用方法 经验总结:Sybase ASA9/ASA10的使用方法
Sybase ASE 12.5数据库实用特性的个人总结 Sybase ASE 12.5数据库实用特性的个人总结
图文讲解安装Sybase 11.9.2的具体步骤 图文讲解安装Sybase 11.9.2的具体步骤
轻松掌握MySQL数据库锁机制的相关原理 (1) 轻松掌握MySQL数据库锁机制的相关原理 (1)
五种MySQL数据库可靠性方案的分析和比较 (1) 五种MySQL数据库可靠性方案的分析和比较 (1)
MySQL数据库中对前端和后台进行系统优化 (1) MySQL数据库中对前端和后台进行系统优化 (1)
巧用MySQL InnoDB引擎锁机制解决死锁问题 (1) 巧用MySQL InnoDB引擎锁机制解决死锁问题 (1)
一种特别简单的MySQL数据库安装方法 一种特别简单的MySQL数据库安装方法
2秒记住本站域名

玩过泡泡龙吗?Readygo?Go! 再加上.Com.Cn的后缀,那就是大名小顶的ReadyGo.com.cn

分类导航
ReadyGo!技术成就梦想