系统间缓存数据库 - 动态特定的 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)
{
}
能到达吗?
不,这是不可能的,因为必须固定列数。但是当您的代码生成结果时,您可以定义一些列,例如 Prop1
、Prop2
...PropN
,结果 return 您需要多少列,以及任何最后一列很可能为空。之后,在您的客户端代码中,您无法通过 Value
.
之类的方式进行访问
我能做到:
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)
{
}
能到达吗?
不,这是不可能的,因为必须固定列数。但是当您的代码生成结果时,您可以定义一些列,例如 Prop1
、Prop2
...PropN
,结果 return 您需要多少列,以及任何最后一列很可能为空。之后,在您的客户端代码中,您无法通过 Value
.