Using Dot Notation with Row-Type Expressions
CREATE ROW TYPE row_t (part_id INT, amt INT);
CREATE TABLE tab1 OF TYPE row_t;
INSERT INTO tab1 VALUES (ROW(1,7)); INSERT INTO tab1 VALUES (ROW(2,10));
CREATE TABLE tab2 (colx INT);
INSERT INTO tab2
VALUES ((SELECT t FROM tab1 t
WHERE part_id = 1).part_id);
The asterisk form of dot notation is not necessary when you want to select all fields of a ROW-type column because you can specify the column name alone to select all of its fields. The asterisk form of dot notation can be quite helpful, however, when you use a subquery, as in the preceding example, or when you call a user-defined function to return ROW-type values.
INSERT INTO mytab2 SELECT new_row (mycol).* FROM mytab1;
References to the fields of a ROW-type column or a ROW-type expression are not allowed in fragment expressions. A fragment expression is an expression that defines a table fragment or an index fragment in SQL statements like CREATE TABLE, CREATE INDEX, and ALTER FRAGMENT.