我需要獲取Caché中的命名空間,數據庫和表的列表,以便循環查看各種事物(如行數)。如何查詢IntersystemsCaché以獲取名稱空間,數據庫和表的列表?
我見過this,但它只列出%SYS命名空間中的數據庫。
我知道我可以在終端中使用LIST^%NSP
來獲得名稱空間的列表,但它有額外的文本(「這裏是定義的名稱空間:」),我不想分析。另外,如果可能,我真的想堅持SQL查詢。
感謝
我需要獲取Caché中的命名空間,數據庫和表的列表,以便循環查看各種事物(如行數)。如何查詢IntersystemsCaché以獲取名稱空間,數據庫和表的列表?
我見過this,但它只列出%SYS命名空間中的數據庫。
我知道我可以在終端中使用LIST^%NSP
來獲得名稱空間的列表,但它有額外的文本(「這裏是定義的名稱空間:」),我不想分析。另外,如果可能,我真的想堅持SQL查詢。
感謝
要列出的命名空間,要在%SYS.Namespace
包List
查詢。
要檢索有關特定命名空間內容的數據,您需要位於該命名空間中。從COS開始,您可以使用ZNSPACE
。然後,您可以查詢%Dictionary.ClassDefinition
,鏈接。與您的陳述相反,這不僅僅查詢%SYS
類,而是從當前命名空間中可用的所有類,它們將(默認情況下)包括以%
開頭的所有類。
如果你想避免這些類,你可以簡單地調用
SELECT Name FROM %Dictionary.ClassDefinition WHERE NOT Name %STARTSWITH '%'
在終端,你可以寫下面的命令:
D ##class(%SYS.Namespace).ListAll(.result)
zw result
這將獲取你所有可用的命名空間。
作爲進一步的說明,您可以將上述列表查詢作爲存儲過程(至少在較新版本中)調用: 'CALL%SYS.Namespace_List()' 處理返回的結果應該相對容易設置,但這可能取決於您的客戶。 您還必須考慮系統是否有任何包映射(其中多個名稱空間中可用的相同定義/庫)或全局映射(其中相同的數據可能在多個名稱空間中可用)。這可能會影響您查看/處理結果的方式。 – DdP