2013-05-03 75 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'