对单值类型进行显式强制转型

要在单值类型与其源类型的值之间进行比较或替代,必须显式地将一种类型强制转型为另一类型。例如:要使用源类型的值来对单值类型的列进行插入或更新,必须显式地将值强制转型为单值类型。

假定创建基于 INTEGER 数据类型的单值类型 int_type 以及带有类型为 int_type 的列的表,如下所示:
CREATE DISTINCT TYPE int_type AS INTEGER;
CREATE TABLE tab_z(col1 int_type); 
要将值插入到 tab_z 表中,必须显式地将 col1 列的值强制转型为 int_type,如下所示:
INSERT INTO tab_z VALUES (35::int_type)
假定创建基于 NUMERIC 数据类型的单值类型 num_type 以及带有类型为 num_type 的列的表,如下所示:
CREATE DISTINCT TYPE num_type AS NUMERIC;
CREATE TABLE tab_x (col1 num_type);
单值 num_type 不继承对 NUMERIC 数据类型存在的系统定义的强制转型。因此,以下插入操作要求进行两个级别的强制转型。第一个强制转型将值 35 从 INT 转换为 NUMERIC,第二个强制转型从 NUMERIC 转换为 num_type
INSERT INTO tab_x VALUES (35::NUMERIC::num_type)
由于不存在用于直接从 INT 类型转换为 num_type 的强制转型,所以对 tab_x 表执行的以下 INSERT 语句将返回错误:
INSERT INTO tab_x VALUES (70::num_type) -- returns error