Skip to main content

This is documentation for Caché & Ensemble. See the InterSystems IRIS version of this content.Opens in a new tab

For information on migrating to InterSystems IRISOpens in a new tab, see Why Migrate to InterSystems IRIS?

SqlComputeCode

このプロパティの値を設定するコードを指定します。

使用法

プロパティの計算方法を指定するには、以下の構文を使用します。

Property name As classname [ SqlComputeCode = { Set {FieldName} = Expression }, SqlComputed ];

以下は、この指定の説明です。

  • FieldName — 定義されるプロパティの SQL フィールド名。

  • Expression — プロパティの値を指定する ObjectScript 式。

詳細

このキーワードを指定した場合 (また、SqlComputed が True の場合)、このプロパティは計算プロパティとなります。"Caché オブジェクトの使用法" の “計算プロパティの定義” を参照してください。

このキーワードの値については、以下の規則に従って、プロパティの値を設定する ObjectScript コードの行を指定します (中括弧で囲む)。

  • このプロパティを参照するには、{*} を使用します。

    また、SqlFieldName キーワードがプロパティに対して指定されていない場合は、{propertyname} を使用します。この propertyname はプロパティの名前です。SqlFieldName キーワードがプロパティに対して指定されている場合は、{sqlfieldnamevalue} を使用します。この sqlfieldnamevalue は、そのキーワードの値です。

    SqlFieldName が役立つのは永続クラスに対してのみですが、すべてのオブジェクト・クラスに使用できます。

    ObjectScript コードのフィールド名の詳細は、"Caché オブジェクトの使用法" の “リテラル・プロパティの定義と使用” の章にある “リテラル・プロパティの SQL プロジェクションの制御”、または "Caché SQL リファレンス" の "CREATE TRIGGER" を参照してください。

  • 同様に、別のプロパティを参照するために、SqlFieldName キーワードがプロパティに対して指定されていない場合は、{propertyname} を使用します。この propertyname はプロパティの名前です。SqlFieldName キーワードがプロパティに対して指定されている場合は、{sqlfieldnamevalue} を使用します。この sqlfieldnamevalue は、そのキーワードの値です。

  • 必要に応じて、コードに複数の Set コマンドを含めることができます。等号の前後には空白文字を使用できますが、Set 文のそれぞれは全体を 1 行で記述する必要があります。

  • コードでは、通常の完全構文を使用して、クラス・メソッド、ルーチン、またはサブルーチンを参照できます。同様に、ObjectScript 関数と演算子を使用できます。

  • コードには、埋め込み SQL を含めることができます。

  • コードには、以下の擬似フィールド参照変数を含めることができます。これは、クラスのコンパイル時に特定の値に変換されます。

    • {%%CLASSNAME} と {%%CLASSNAMEQ} は、ともに SQL テーブル定義を投影するクラスの名前に変換されます。{%%CLASSNAME} は引用符なし文字列を返し、{%%CLASSNAMEQ} は引用符付き文字列を返します。

    • {%%TABLENAME} はテーブルの完全修飾名に変換され、引用符付き文字列を返します。

    • {%%ID} は RowID 名に変換されます。この参照は、RowID フィールドの名前がわからないときに役立ちます。

    これらの名前は、大文字と小文字を区別しません。

  • コードでは、..propertyname の形式および ..methodname() の形式の構文は使用できません

以下に例を示します。

Property TestProp As %String [ SqlComputeCode = {set {*} = {OtherField}}, SqlComputed ];

別の例を示します。

Property FullName As %String [ SqlComputeCode = {set {*}={FirstName}_" "_{LastName}}, SqlComputed ];

このコードは、Do コマンドで呼び出します。

Important:
  • このフィールドのインデックス付けを予定している場合は、非決定的コードではなく、決定的コードOpens in a new tabを使用します。非決定的コードは、古いインデックス・キー値を確実に削除することができないため、Caché は非決定的コードの結果に対するインデックスを保持できません。(決定的コードは、同じ引数を渡された場合はいつでも同じ値を返します。例えば、$h を返すコードは、$h が関数の制御外で変更されているため、非決定的です。)

  • SqlComputeCode で使用されるユーザ変数はすべて、使用前に New が適用されます。これにより、関連コード内の別の場所にある同名変数との競合を回避できます。

既定値

既定値は空文字列です。

関連項目

FeedbackOpens in a new tab