系统间缓存数据库 - 动态特定的 ROWSPEC

Intersystems cache db - specific ROWSPEC dynamically

我能做到:

Query All() As %Query(CONTAINID = 1, ROWSPEC = "Title:%String,Author:%String")
{
}

但我需要动态指定 ROWSPEC。我有这样的全局变量:

^glob("title1","author1","xxKZ1") = "val1"
^glob("title1","author1","ssn","xyPO2") = "val2"
^glob("title2","author2","xxII8") = "val3"

^globNext("key1") = "val1"
^globNext("key1","key2") = "val2"

所以我需要动态创建查询行的结构。对于 ^glob 我需要这样的东西:

Query All() As %Query(CONTAINID = 1, ROWSPEC = "Prop1:%String, Prop2:%String, Prop3:%String, Prop4:%String, Val:%String")
    {
    }

对于 ^globNext,我需要这样的东西:

Query All() As %Query(CONTAINID = 1, ROWSPEC = "Prop1:%String, Prop2:%String)
    {
    }

能到达吗?

不,这是不可能的,因为必须固定列数。但是当您的代码生成结果时,您可以定义一些列,例如 Prop1Prop2...PropN,结果 return 您需要多少列,以及任何最后一列很可能为空。之后,在您的客户端代码中,您无法通过 Value.

之类的方式进行访问