2013-05-03 92 views
1

我想了解Sybase IQ中存储过程的依赖关系,考虑到它似乎没有sysdepends,任何人都可以让我知道如何列出给定存储的依赖关系程序?Sybase IQ中sysdepends的替代

回答

1

在Sybase IQ中,相关性信息保存在SYSDEPENDENCY系统视图中。要查找依赖关系信息,可以加入SYSDEPENDENCY,SYSOBJECT和SYSPROCS以查找存储过程的依赖关系。

+0

谢谢,你能告诉我哪些表加入? 试过这个,但它回来了空结果集。 select * from sysdependency sd,sysobjects where where(ref_object_id = id or dep_object_id = id)and name ='mysp' – codevalid 2013-05-03 12:41:45

+0

* sysobjects *是一个ASE兼容性视图。我会使用* sysobject *,而不是IQ对象视图。 'name'不是这些表中的任何一列的列,所以您可能需要在* sysprocs *中添加以获取您要查找的内容。 – 2013-05-03 13:07:18

+0

不幸的是,这是我发现在sybase iq手册 当你有一个引用另一个表/视图的视图,两个对象之间的 链接现在存储在SYSDEPENDENCY表 – codevalid 2013-05-03 13:09:18

-1

在sybase IQ中没有找到proc的依赖关系的系统过程。 sysdependency仅包含视图的信息,所以在这种情况下没有太多帮助。

您可能会尝试使用unix脚本执行此操作,您可以在其中搜索proc中使用的所有表格,但这又不是一个简短的解决方案。

0

它已经有一段时间了,但认为有人可能从中受益。

select soRef.name, soRef.type, soRef.id,suRef.user_name, soDep.name, soDep.type, 
suDep.user_name, soDep.id from SYSDEPENDENCY sd 
join sysobjects soREf on soRef.id=sd.ref_object_id 
join sysobjects soDep on soDep.id=sd.dep_object_id 
join sysuser suRef on suRef.user_id=soREF.uid 
join sysuser suDep on suDep.user_id=soDep.uid 
where suRef.user_name='myusername'