TREAT
構文
目的
TREATは式の宣言型を変更します。
このファンクションを使用する場合は、typeに対するEXECUTEオブジェクト権限が必要です。
-
exprとtypeは、トップレベルのコレクションを除く、ユーザー定義オブジェクト型である必要があります。 -
typeは、スーパータイプまたはexprの宣言型のサブタイプである必要があります。exprの最も指定される型がtype(またはtypeのサブタイプ)である場合、TREATはexprを戻します。exprの最も指定される型がtype(またはtypeのサブタイプ)ではない場合、TREATはNULLを戻します。 -
exprの宣言型がREF型の場合にのみ、REFを指定できます。 -
exprの宣言型がexprのソース型へのREFである場合、typeはサブタイプまたはexprのソース型のスーパータイプである必要があります。DEREF(expr)の最も指定される型がtype(またはtypeのサブタイプ)である場合、TREATはexprを戻します。DEREF(expr)の最も指定される型がtype(またはtypeのサブタイプ)ではない場合、TREATはNULLを戻します。
関連項目:
詳細は、「データ型の比較規則」を参照してください。
例
次の例では、「置換可能な表および列のサンプル」で作成された表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ファンクションを使用すると、置換可能列のサブタイプ属性に索引を作成できます。例は、「置換可能な列の索引の作成: 例」を参照してください。
