TREAT

構文

目的

TREATは式の宣言型を変更します。

このファンクションを使用する場合は、typeに対するEXECUTEオブジェクト権限が必要です。

  • exprtypeは、トップレベルのコレクションを除く、ユーザー定義オブジェクト型である必要があります。

  • typeは、スーパータイプまたはexprの宣言型のサブタイプである必要があります。exprの最も指定される型がtype(またはtypeのサブタイプ)である場合、TREATexprを戻します。exprの最も指定される型がtype(またはtypeのサブタイプ)ではない場合、TREATNULLを戻します。

  • exprの宣言型がREF型の場合にのみ、REFを指定できます。

  • exprの宣言型がexprのソース型へのREFである場合、typeはサブタイプまたはexprのソース型のスーパータイプである必要があります。DEREF(expr)の最も指定される型がtype(またはtypeのサブタイプ)である場合、TREATexprを戻します。DEREF(expr)の最も指定される型がtype(またはtypeのサブタイプ)ではない場合、TREATNULLを戻します。

関連項目:

詳細は、「データ型の比較規則」を参照してください。

次の例では、「置換可能な表および列のサンプル」で作成された表oe.personsを使用します。次の例では、persons表のすべての人物の給与属性を検索します。従業員ではない人物のインスタンスの値はNULLです。

SELECT name, TREAT(VALUE(p) AS employee_t).salary salary 
   FROM persons p;

NAME                          SALARY
------------------------- ----------
Bob
Joe                           100000
Tim                             1000

TREATファンクションを使用すると、置換可能列のサブタイプ属性に索引を作成できます。例は、「置換可能な列の索引の作成: 例」を参照してください。