CREATE ROW TYPE address_t ( street CHAR(20), city CHAR(15), state CHAR(2) ); CREATE TABLE empinfo ( emp_id INT name ROW ( fname CHAR(20), lname CHAR(20)), address address_t );
要更新未命名的 ROW 类型,请在圆括号括起的字段值的列表之前指定 ROW 构造函数。
UPDATE empinfo SET name = ROW('John','Williams') WHERE emp_id =455;
UPDATE empinfo SET address = ROW('103 Baker St','Tracy','CA')::address_t WHERE emp_id = 3568;
要获取更多关于 ROW 构造函数的语法,请参阅 构造函数表达式。另请参阅 Literal Row。
ROW 列 SET 子句仅可支持字段的文字值。要使用 ESQL/C 变量来指定字段值,您必须将 ROW 数据选择到 row 变量内,使用单独的字段值的主变量,然后以 row 变量更新 ROW 列。要获取更多信息,请参阅 更新 Row 变量(ESQL/C)。
使用 row 变量作为 SET 子句中的变量名称来一次更新 ROW 列中的所有字段。
要将非文字值插入 ROW 类型列内,您可首先更新 row 变量中的元素,然后指定在 UPDATE 语句的 SET 子句中的 collection 变量。
当您使用 SET 子句中的 row 变量时,row 变量必须包含每一字段值的值。要获取关于如何将值插入到 row 变量内的信息,请参阅 更新 Row 变量(ESQL/C)。
例如,下列 UPDATE 语句仅更改 empinfo 表的 address 列的 street 和 city 字段:
UPDATE empinfo SET address = ROW('23 Elm St', 'Sacramento', address.state) WHERE emp_id = 433;
address.state 字段保持不变。
要获取更多信息,请参阅 更新 Row 变量(ESQL/C)。