2013-11-21 64 views
2

我需要獲取Caché中的命名空間,數據庫和表的列表,以便循環查看各種事物(如行數)。如何查詢IntersystemsCaché以獲取名稱空間,數據庫和表的列表?

我見過this,但它只列出%SYS命名空間中的數據庫。

我知道我可以在終端中使用LIST^%NSP來獲得名稱空間的列表,但它有額外的文本(「這裏是定義的名稱空間:」),我不想分析。另外,如果可能,我真的想堅持SQL查詢。

感謝

回答

2

要列出的命名空間,要在%SYS.NamespaceList查詢。

要檢索有關特定命名空間內容的數據,您需要位於該命名空間中。從COS開始,您可以使用ZNSPACE。然後,您可以查詢%Dictionary.ClassDefinition,鏈接。與您的陳述相反,這不僅僅查詢%SYS類,而是從當前命名空間中可用的所有類,它們將(默認情況下)包括以%開頭的所有類。

如果你想避免這些類,你可以簡單地調用

SELECT Name FROM %Dictionary.ClassDefinition WHERE NOT Name %STARTSWITH '%' 
+0

作爲進一步的說明,您可以將上述列表查詢作爲存儲過程(至少在較新版本中)調用: 'CALL%SYS.Namespace_List()' 處理返回的結果應該相對容易設置,但這可能取決於您的客戶。 您還必須考慮系統是否有任何包映射(其中多個名稱空間中可用的相同定義/庫)或全局映射(其中相同的數據可能在多個名稱空間中可用)。這可能會影響您查看/處理結果的方式。 – DdP

1

在終端,你可以寫下面的命令:

D ##class(%SYS.Namespace).ListAll(.result) 
zw result 

這將獲取你所有可用的命名空間。

相關問題