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