我需要获取Caché中命名空间、数据库和表的列表,以便我可以循环每个并查询各种事情(例如行数)。 我看过this,但它只列出了%SYS命名空间中的数据库。 我知道我可以在终端中使用
LIST^%NSP
来获取命名空间列表,但它有额外的文本(“这里是定义的命名空间:”),我不想解析。 另外,如果可能的话,我真的想坚持使用SQL查询。 谢谢LIST^%NSP
来获取命名空间列表,但它有额外的文本(“这里是定义的命名空间:”),我不想解析。 另外,如果可能的话,我真的想坚持使用SQL查询。 谢谢D ##class(%SYS.Namespace).ListAll(.result)
zw result
%SYS.Namespace
包中使用List
查询。ZNSPACE
。然后,您可以查询链接的%Dictionary.ClassDefinition
。与您的说法相反,这不仅查询%SYS
类,而是所有来自当前命名空间的可用类,默认情况下,这将包括以%
开头的所有类。SELECT Name FROM %Dictionary.ClassDefinition WHERE NOT Name %STARTSWITH '%'
CALL %SYS.Namespace_List()
处理返回结果集应该相对容易,但这可能取决于您的客户端。您还需要考虑系统是否有任何包映射(多个命名空间中可用相同的定义/库)或全局映射(相同的数据可能在多个命名空间中可用)。这可能会影响您查看/处理结果的方式。 - DdP