TREAT
構文
目的
TREATファンクションを使用して、式の宣言された型を変更できます。
式がJSONデータを返すようにする場合は、キーワードAS JSONを使用します。これは、テキストを強制的にJSONデータとして解釈させる場合に便利です。たとえば、{}のVARCHAR2値を、文字列ではなく空のJSONオブジェクトとして解釈させる場合に使用できます。
このファンクションを使用する場合は、typeに対するEXECUTEオブジェクト権限が必要です。
-
expr AS JSONのexprは、JSONを含むSQLデータ型(CLOBなど)です。 -
expr AS typeの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ファンクションを使用すると、置換可能列のサブタイプ属性に索引を作成できます。例は、「置換可能な列の索引の作成: 例」を参照してください。
