如何查询IntersystemsCaché以获取命名空间,数据库和表的列表?

时间:2013-11-21 01:58:37

标签: sql intersystems-cache

我需要在Caché中获取命名空间,数据库和表的列表,这样我就可以循环遍历每个并查询各种事物(如行计数)。

我见过 this ,但它只列出了%SYS命名空间中的数据库。

我知道我可以在终端中使用LIST^%NSP来获取命名空间列表,但它有额外的文本(“这里是定义的命名空间:”),我不想解析。另外,如果可能的话,我真的很想坚持使用SQL查询。

由于

2 个答案:

答案 0 :(得分:2)

要列出名称空间,您需要%SYS.Namespace包中的List查询。

要检索有关特定命名空间内容的数据,您需要位于该命名空间中。从COS,您可以使用ZNSPACE。然后,您可以将%Dictionary.ClassDefinition作为链接进行查询。与您的语句相反,这不仅查询%SYS类,而是查询当前名称空间中的所有类,这些类(默认情况下)将包含以%开头的所有类。

如果您想避开这些课程,可以直接致电

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

答案 1 :(得分:2)

在终端中,您可以编写以下命令:

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

这将获取所有可用的命名空间。