得到对象调用的其他对象,显示为树形结构
2007-05-26 16:47
477 查看
create proc p_e_get_object_ordinal @object_name varchar(50)
as
/*
描述:
得到对象(函数、存储过程、视图)调用的对象列表,显示为树形结构
版本:
时间 修改人 操作
2007年2月23日 mengmou 创建
输入参数:
@object_name 对象名称
返回:
object 对象名称
涉及:
sysobjects
syscomments
变量:
@level 层次
@tmp_ordinal 保存树形结构
临时表:
*/
begin
set nocount on
set xact_abort on
if not exists(select 1 from sysobjects where name = @object_name and type in('FN','IF','P','TF','V'))
begin
select '对象不存在!' as object
return
end
declare @level int set @level = 0
declare @tmp_ordinal table (id int identity(1,1),obj_name varchar(50),parent_name varchar(50),sid varchar(7900))
insert @tmp_ordinal(obj_name,parent_name,sid) select @object_name,null,'01'
while @@rowcount > 0
begin
update _t
set _t.sid = _t1.sid + right(100+_t.id,2)
from @tmp_ordinal _t
join @tmp_ordinal _t1 on _t1.obj_name = _t.parent_name
where _t.sid is null
set @level = @level + 1
insert @tmp_ordinal
select distinct object_name(_d.depid),_o.obj_name,null
from @tmp_ordinal _o
join sysdepends _d on _d.id = object_id(_o.obj_name)
where len(_o.sid) = @level*2
end
select space((len(sid)/2-1)*4)+obj_name as object,_o.xtype
from @tmp_ordinal _t
join sysobjects _o on _o.name = _t.obj_name
order by sid
end
go
create proc p_a
as
begin
select 1
end
go
create proc p_b
as
begin
exec p_a
end
go
create proc p_c
as
begin
exec p_b
exec p_a
end
go
exec p_e_get_object_ordinal 'p_c'
go
drop proc p_e_get_object_ordinal,p_a,p_b,p_c
/*
object xtype
------------- -------
p_c P
p_a P
p_b P
p_a P
*/
as
/*
描述:
得到对象(函数、存储过程、视图)调用的对象列表,显示为树形结构
版本:
时间 修改人 操作
2007年2月23日 mengmou 创建
输入参数:
@object_name 对象名称
返回:
object 对象名称
涉及:
sysobjects
syscomments
变量:
@level 层次
@tmp_ordinal 保存树形结构
临时表:
*/
begin
set nocount on
set xact_abort on
if not exists(select 1 from sysobjects where name = @object_name and type in('FN','IF','P','TF','V'))
begin
select '对象不存在!' as object
return
end
declare @level int set @level = 0
declare @tmp_ordinal table (id int identity(1,1),obj_name varchar(50),parent_name varchar(50),sid varchar(7900))
insert @tmp_ordinal(obj_name,parent_name,sid) select @object_name,null,'01'
while @@rowcount > 0
begin
update _t
set _t.sid = _t1.sid + right(100+_t.id,2)
from @tmp_ordinal _t
join @tmp_ordinal _t1 on _t1.obj_name = _t.parent_name
where _t.sid is null
set @level = @level + 1
insert @tmp_ordinal
select distinct object_name(_d.depid),_o.obj_name,null
from @tmp_ordinal _o
join sysdepends _d on _d.id = object_id(_o.obj_name)
where len(_o.sid) = @level*2
end
select space((len(sid)/2-1)*4)+obj_name as object,_o.xtype
from @tmp_ordinal _t
join sysobjects _o on _o.name = _t.obj_name
order by sid
end
go
create proc p_a
as
begin
select 1
end
go
create proc p_b
as
begin
exec p_a
end
go
create proc p_c
as
begin
exec p_b
exec p_a
end
go
exec p_e_get_object_ordinal 'p_c'
go
drop proc p_e_get_object_ordinal,p_a,p_b,p_c
/*
object xtype
------------- -------
p_c P
p_a P
p_b P
p_a P
*/
相关文章推荐
- Ext调用xmlert文件以树形结构显示
- OC多文件开发简单例子实现(重点:self在对象方法中调用其他对象方法的3种方法)
- 该对象尚未初始化。请确保在所有其他初始化代码后面的应用程序启动代码中调用 HttpConfiguration.EnsureInitialized()。
- linux tree命令以树形结构显示文件目录结构
- 使用原生js读取树形结构对象构筑多级结构菜单
- Linux用树形结构显示目录结构
- 通过树形结构在控制台显示XML文档的全部内容
- wpf-由于其他线程拥有此对象,因此调用线程无法对其进行访问。
- java+SpringMvc——查询数据,以树形结构显示
- 树形结构的处理--得到指定id的子id列表
- 通过Java的反射机制创建运行时类的对象并调用其结构
- oracle树形结构由子节点递归得到父节点
- Android 多级树形结构显示
- TreeList 用含有树形结构的数据源绑定显示
- 在自己的app中调用其他浏览器显示网页
- DropDownList实现树形结构显示
- 【easyui】treeGrid显示树形结构
- java低级小错误 未实例化对象,调用其他类方法
- DropDownList中显示无限级树形结构
- OA项目实战学习(8)——配置权限的树形结构显示