我有一个具有多个计算属性的类。 我想将这些属性添加到投影的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)
}