获得当前数据库中对象的依赖关系的算法
来源:互联网 发布:中世纪2优化9可以复国 编辑:程序博客网 时间:2024/04/30 05:40
create function udf_GenLevelPath_Table()
?returns @v_Result table (LevelPath int,OName sysname,type varchar(8))
/****************************************************************/
/*?功能描述:按照依赖关系,列出数据库对象????????????????????????????????????????????? ?*/
/*?输入参数:无?????????????????????????????????????????????????????????????????????????????????????????????????? */
/*?输出参数:按照依赖关系排列的数据库对象表,无依赖的在前?????????????? */
/*?编??????? 写:我????????????????????????????????????????????????????????????????????????????????????????????????? ?*/
/*?时间:2003-9-9??????????????????????????????????????????????????????????????????????????????????????????????? */
/****************************************************************/
as
begin
?declare @vt_ObjDepPath table (LevelPath int,OName sysname null, type Varchar(8))
?declare @vt_Temp1 table (OName sysname null)
?declare @vt_Temp2 table (OName sysname null)
?declare @vi_LevelPath int
?set @vi_LevelPath = 1
?insert into @vt_ObjDepPath(LevelPath,OName,type)
??select @vi_LevelPath,o.name,o.type
???from sysobjects o
???where xtype not in ('S','X')
?
?insert into @vt_Temp1(OName)
??select distinct object_name(sysdepends.depid)
???from sysdepends,@vt_ObjDepPath p
???where sysdepends.id <> sysdepends.depid
????and p.OName = object_name(sysdepends.id)
?
?while (select count(*) from @vt_Temp1) > 0
?begin
??set @vi_LevelPath = @vi_LevelPath + 1
?
??update @vt_ObjDepPath
???set LevelPath = @vi_LevelPath
???where OName in (select OName from @vt_Temp1)
????and LevelPath = @vi_LevelPath - 1
?
??delete from @vt_Temp2
?
??insert into @vt_Temp2
???select * from @vt_Temp1
?
??delete from @vt_Temp1
?
??insert into @vt_Temp1(OName)
???select distinct object_name(sysdepends.depid)
????from sysdepends,@vt_Temp2 t2
????where t2.OName = object_name(sysdepends.id)
?????and sysdepends.id <> sysdepends.depid
?end
?select @vi_LevelPath = max(LevelPath) from @vt_ObjDepPath
?update @vt_ObjDepPath
??set LevelPath = @vi_LevelPath + 1
??where OName not in (select distinct object_name(sysdepends.id) from sysdepends)
???and LevelPath = 1
?
?insert into @v_Result
??select * from @vt_ObjDepPath order by LevelPath desc
?return
end
go
- 获得当前数据库中对象的依赖关系的算法
- 获得当前数据库对象依赖关系的实用算法
- 查找当前用户的所有数据库对象的依赖关系
- 发现数据库对象的依赖关系
- 查看数据库对象间的依赖关系
- 13. 查看数据库对象间的依赖关系
- 分析数据库的依赖关系
- 更改当前数据库中对象的所有者
- javascript获得当前对象的位置
- 如何获得当前数据库的SCN值
- 如何获得当前数据库的SCN值
- 【SQLServer】获得当前数据库的所有表
- 如何获得当前数据库的SCN值
- php中获得当前url的方法
- java中获得当前路径的方法
- Java中获得当前时间的方法
- Java中获得当前时间的方法
- VC 中获得当前路径的方法
- 利用排序规则特点计算汉字笔划和取得拼音首字母
- WMI问题答案集锦
- 明天运动会
- 破解加密存储过程,函数,视图,触发器
- 在两个ASP.NET页面之间传递值
- 获得当前数据库中对象的依赖关系的算法
- windows一些技巧(转)
- 出差
- 今天的成绩
- 如何用正确的方法来写出质量好的软件的75条体会
- Hibernate初体验Cat之快速上手
- delphi中将UCS2编码的字符串转化为GB2312编码的简单方法
- 历时5个月做的Echo Eclipse插件
- 利用win2k系统的cdosys.dll库发送带附件的邮件之办法