Select row-type data
This section describes how to query data that is defined as row-type data. A ROW type is a complex type that combines one or more related data fields.
The two kinds of ROW types are as
follows:
- Named ROW type
- A named ROW type can define tables, columns, fields of another row-type column, program variables, statement local variables, and routine return values.
- Unnamed ROW type
- An unnamed ROW type can define columns, fields of another row-type column, program variables, statement local variables, routine return values, and constants.
The examples used throughout this section use
the named ROW types zip_t, address_t, and employee_t,
which define the employee table. The following figure shows
the SQL syntax that creates the ROW types and table.
Figure 1. SQL syntax that creates
the ROW types and table.
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
The named ROW types zip_t, address_t and employee_t serve as templates for the fields and columns of the typed table, employee. A typed table is a table that is defined on a named ROW type. The employee_t type that serves as the template for the employee table uses the address_t type as the data type of the address field. The address_t type uses the zip_t type as the data type of the zip field.
The following figure shows the SQL
syntax that creates the student table. The s_address column
of the student table is defined on an unnamed ROW type. (The s_address column
could also have been defined as a named ROW type.)
Figure 2. SQL syntax that creates
the student table.
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)
)