TREAT

構文

目的

TREATファンクションを使用して、式の宣言された型を変更できます。

式がJSONデータを返すようにする場合は、キーワードAS JSONを使用します。これは、テキストを強制的にJSONデータとして解釈させる場合に便利です。たとえば、{}のVARCHAR2値を、文字列ではなく空のJSONオブジェクトとして解釈させる場合に使用できます。

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

  • expr AS JSONexprは、JSONを含むSQLデータ型(CLOBなど)です。

  • expr AS typeexprおよびtypeは、ユーザー定義のオブジェクト型である必要があります(トップレベルのコレクションを除く)。

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