GBase 8s数据库能够通过创建扩展数据类型来表示用内置数据类型不易表示的数据。可以创建下列类别的扩展数据类型:复杂数据类型、单值数据类型、不透明数据类型
1、复杂数据类型:可以存储一个或多个其他内置或扩展数据类型的值。
复杂数据类型的结构包含,由元素组成的集合类型,每个元素具有相同的数据类型:

还包括由字段组成的ROW类型:

GBase 8s支持的复杂数据类型如下:

2、单值数据类型:具有与数据库中某些其他源数据类型相同的内部结构。源类型可以是内置或扩展数据类型。单值类型与其源类型的区别在于对单值类型定义的支持函数。
同一个表中 DISTINCT 集合数据类型(SET、LIST 和 MULTISET)的列不超过 97 列。
同一个表中类型为 DISTINCT(基于 BYTE、TEXT、ROW、或 LVARCHAR 源类型)的列不超过 195 列。(此处的 195 列接近基页大小为 2 Kb 的平台适用的下限。对于基页大小为 4 Kb 的平台,例如 AIX® 系统,这些数据类型的列上限约为 450 列。)有关更多信息,请参阅 DISTINCT 数据类型一节。
3、不透明数据类型:是完全封装的用户定义的数据类型。对于数据库服务器,不透明数据类型的内部结构是未知的。除 DISTINCT 类型的用户定义类型 (UDT) 之外,源类型是内置类型的 UDT 为不透明数据类型。
内置数据类型 BLOB、BOOLEAN、CLOB 和 LVARCHAR 是作为不透明数据类型来实现的。您无法在跨服务器的分布式操作中访问这些内置不透明数据类型,但是您可以在相同 GBase 8s 实例的其他数据库中进行访问。
您必须为不透明数据类型的数据库服务器提供以下信息:
• 如何在磁盘上存储数据值的数据结构
• 确定如何在磁盘存储格式与用于数据输入和显示的用户格式之间转换的支持函数
• 确定如何为此数据类型构建、使用和处理索引的辅助访问方法
• 使用数据类型的用户函数
• 用于在数据库中注册不透明类型的系统目录条目
不透明类型的内部结构对数据库服务器不可视,只能通过用户定义的例程存取。不透明类型的定义存储在 sysxtdtypes 系统目录表中。以下 SQL 语句会维护数据库中不透明类型的定义:
• CREATE OPAQUE TYPE 语句在数据库中注册了一个新的不透明类型。
• DROP TYPE 语句从数据库中除去先前定义的不透明类型。




