未命名 ROW 类型包含字段,
但没有任何用户声明的名称。
未命名 ROW 类型通过其
结构来定义。
如果两个未命名 ROW 类型具有相同的结构(意味着字段的数据类型的排序列表),那
么它们相同。如果两种未命名 ROW 类型具有相同数目的字段,并且如果一种 ROW 类型中
每个字段的数据类型顺序与另一种 ROW 类型中对应字段的数据类型顺序相匹配,
那么这两
个未命名 ROW 数据类型等同。
例如,下列未命名 ROW 类型等同:
GBase 8s SQL 指南:参考
南大通用数据技术股份有限公司 - 105 -
ROW (lname char(15), initial char(1) fname char(15))
ROW (dept char(15), rating char(1) name char(15))
下列 ROW 类型具有相同的字段数和相同的数据类型,但它们不相等,因为其字段顺序
不同:
ROW (x integer, y varchar(20), z real)
ROW (x integer, z real, y varchar(20))
未命名 ROW 类型字段可以是下列任何数据类型:
内置类型
集合类型
单值类型
其他 ROW 类型
不透明类型
不能在类型表或类型继承层次结构中使用未命名 ROW 类型。有关未命名 ROW 类型的
更多信息,请参阅《GBase
8s
SQL 指南:语法》和《GBase
8s 数据库设计和实现指南》。
创建未命名 ROW 类型
您可以使用数种方法来创建未命名 ROW 类型:
可以使用 ROW 关键字来声明未命名 ROW 类型。ROW 中的每个字段可具有不同的
字段类型。要指定字段类型,使用以下语法:
ROW(field_name field_type, ...)
field_name 必须遵从 SQL 标识的规则。(请参阅 GBase 8s SQL 指南:语法 中的
Identifier 一节。)
要生成未命名 ROW 类型,请使用 ROW 关键字作为具有一系列值的构造函数。使
用具有指定值的缺省数据类型来创建对应的未命名 ROW 类型。
例如:以下声明:
ROW(1, 'abc', 5.30)
定义下面的未命名 ROW 数据类型:
ROW (x INTEGER, y VARCHAR, z DECIMAL)
可通过隐式或显式从命名 ROW 类型或从另一种未命名 ROW 类型的强制转型来创
建未命名 ROW 类型。
任何表(对命名 ROW 类型定义的表除外)的行都是未命名 ROW 类型。
同一个表中不超过 195 列可以是未命名 ROW 类型。
将值插入到未命名 ROW 类型列
当为未命名 ROW 类型指定字段值时,
在构造函数后面列出字段值并将这些值列在圆括
号中。例如,假设您具有未命名 ROW 类型的列。以下 INSERT 语句将一组字段值添加至此
GBase 8s SQL 指南:参考
南大通用数据技术股份有限公司 - 106 -
行列:
INSERT INTO table1 VALUES (ROW(4, 'abc'))
可在 SELECT 语句 WHERE 子句的 IN 谓词中指定行列以搜索匹配行值。
有关更多信息,
请参阅 GBase 8s SQL 指南:语法 中的 Condition 一节。