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 に答える