Declare row-type variables

Row-type variables hold data from named or unnamed row types. You can define a named row variable or an unnamed row variable. Suppose you define the named row types that the following figure shows.
Figure 1: Named and unnamed row variables.
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;
If you define a variable with the name of a named row type, the variable can only hold data of that row type. In the following figure, the person variable can only hold data of employee_t type.
Figure 2: Defining the person variable.
DEFINE person employee_t;
To define a variable that holds data stored in an unnamed row type, use the ROW keyword followed by the fields of the row type, as the following figure shows.
Figure 3: Use the ROW keyword followed by the fields of the row type.
DEFINE manager ROW (name        VARCHAR(30),
                    department  VARCHAR(30),
                    salary      INTEGER );
Because unnamed row types are type-checked for structural equivalence only, a variable defined with an unnamed row type can hold data from any unnamed row type that has the same number of fields and the same type definitions. Therefore, the variable manager can hold data from any of the row types in the following figure.
Figure 4: Unnamed row types.
ROW ( name         VARCHAR(30),
      department   VARCHAR(30),
      salary       INTEGER );

ROW ( french      VARCHAR(30),
      spanish     VARCHAR(30),
      number      INTEGER );

ROW ( title       VARCHAR(30),
      musician    VARCHAR(30),
      price       INTEGER );
Important: Before you can use a row type variable, you must initialize the row variable with a LET statement or SELECTINTO statement.