使用"SqlComputeCode"关键字将计算属性投影到 sql 表中



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

Property Age As %String [SqlComputeCode...]

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

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

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

不能从 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)
}

最新更新