选择行类型数据

本节描述如何查询定义为行类型的数据。ROW 类型是一个复杂类型,包含一个或多个相关数据字段。

两种 ROW 类型如下:
已命名 ROW 类型
已命名的 ROW 类型可以定义表、列、其它行类型列的字段、程序变量、语句变量以及例程返回值。
未命名 ROW 类型
未命名 ROW 类型可以定义列、其它行类型列的字段、程序变量、语句局部变量、例程返回值和常量。
本节中使用的示例使用已命名 ROW 类型 zip_taddress_temployee_t,这些 ROW 类型定义 employee 表。下图显示创建 ROW 类型和表的 SQL 语法。

图: 创建 ROW 类型和表的 SQL 语法

CREATE ROW TYPE zip_t
            (
            z_code    CHAR(5),
            z_suffix  CHAR(4)
            )
            
            CREATE ROW TYPE address_t
            (
            street    VARCHAR(20),
            city      VARCHAR(20),
            state     CHAR(2),
            zip       zip_t
            )
            
            CREATE ROW TYPE employee_t 
            (
            name      VARCHAR(30),
            address   address_t,
            salary    INTEGER
            )
            
            CREATE TABLE employee OF TYPE employee_t

已命名的 ROW 类型 zip_taddress_temployee_t 充当类型表 employee 的字段和列的模板。类型表是在已命名 ROW 类型上定义的表。充当 employee 表的模板的 employee_t 类型将 address_t 类型用作 address 字段的数据类型。address_t 类型使用 zip_t 类型作为 zip 字段的数据类型。

下图显示了创建 student 表的 SQL 语法。student 表的 s_address 列定义为未命名的 ROW 类型。(s_address 列被定义为已命名的 ROW 类型。)

图: 创建 student 表的 SQL 语法

CREATE TABLE student 
            (
            s_name      VARCHAR(30),
            s_address   ROW(street VARCHAR (20), city VARCHAR(20),
            state CHAR(2), zip VARCHAR(9)),
            grade_point_avg DECIMAL(3,2)
            )