2

我有一个有几个计算属性的类。我想将这些属性添加到投影的 sql 表中,以便我可以查询它们。但是,我注意到默认情况下计算的属性不会投影到 sql 表中。要将它们投影到sql表中,必须在指定数据类型后在括号中添加关键字SqlComputeCode

Property Age As %String [SqlComputeCode...]

但是,我不确定此处使用的确切语法,也没有发现有关它的文档特别有用(我认为 Intersystems 需要展示更多示例)。因为属性是计算出来的,所以我已经有了一个 get 方法来进行计算。

Method AgeGet() As %String
{
   ...
   Quit "Something"
}

我只想在我的 sql 表投影中使用这个 get 方法中的计算。谁能帮我吗?提前致谢...

4

1 回答 1

3

您无法从 SQL 计算中访问实例方法。因此,您需要重构您拥有的方法 - 最直接的是类方法。

Property Age As %String [SqlComputeCode = {S {Age}=##CLASS(MyClass).GetAge({DateOfBirth})}, SqlComputed]

ClassMethod GetAge(DateOfBirth as %Date)
{
    Q ##CLASS(MyDateRoutineClass).DifferenceInYears(##CLASS(MyDateRoutineClass).Now(),DateOfBirth)
}

Method AgeGet() As %String
{
   ...
   Quit ..GetAge(..DateOfBirth)
}
于 2012-11-21T18:43:41.743 回答