我需要在Caché中获取命名空间,数据库和表的列表,这样我就可以循环遍历每个并查询各种事物(如行计数)。
我见过 this ,但它只列出了%SYS命名空间中的数据库。
我知道我可以在终端中使用LIST^%NSP
来获取命名空间列表,但它有额外的文本(“这里是定义的命名空间:”),我不想解析。另外,如果可能的话,我真的很想坚持使用SQL查询。
由于
答案 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
这将获取所有可用的命名空间。