Oracle TREAT() 函数使用指南

Oracle TREAT() 是一个内置函数,它用于更改表达式的声明类型。

Oracle TREAT() 语法

这里是 Oracle TREAT() 函数的语法:

TREAT( expr AS [ REF ] [ schema. ]type | JSON )

参数

expr

必需的。被操作的表达式。

[ REF ] [ schema. ]type | JSON

必需的。需要声明为的类型。

返回值

Oracle TREAT() 函数返回。

请注意,您必须拥有对 typeEXECUTE 对象特权才能使用此函数。

  • expr AS JSON 中,expr 是包含 JSON 的 SQL 数据类型,例如 CLOB

  • expr AS type 中,exprtype 必须是用户定义的对象类型,不包括顶级集合。

  • type 必须是 expr 声明类型的某个超类型或子类型。如果 expr 的最具体类型是 type(或 type 的某个子类型),则 TREAT 返回 expr。如果 expr 的最具体类型不是 type(或 type 的某个子类型),则 TREAT 返回 NULL

  • 如果 expr 的声明类型是 REF 类型,则只能指定 REF

  • 如果 expr 的声明类型是 expr 的源类型的 REF,则 type 必须是源类型的某个子类型或超类型。如果 DEREFexpr)的最具体类型是 type(或 type 的子类型),则 TREAT 返回 expr。如果 DEREFexpr)的最具体类型不是 type(或 type 的子类型),则 TREAT 返回 NULL

Oracle TREAT() 示例

以下语句检索 persons 表中所有人的工资属性,对于不是员工的人的实例,值为 null。

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

输出:

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

结论

Oracle TREAT() 是一个内置函数,它用于更改表达式的声明类型。