暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

GBase 8s支撑您创建扩展数据类型

GBASE数据库 2022-07-04
505

GBase 8s 使您能够创建扩展数据类型来表示用内置数据类型不易表示的数据。(但是不能在查询外部表的分布式事务中使用扩展数据类型。)可以创建下列类别的扩展数据类型:
• 复杂数据类型
• 单值数据类型
• 不透明数据类型

复杂数据类型可以存储一个或多个其他内置或扩展数据类型的值,以嵌套复杂数据类型集合数据类型是由一个或多个元素(所有元素都具有相同的数据类型)组成的复杂类型。集合元素可以为除 BYTE、TEXT、SERIAL、SERIAL8 或 BIGSERIAL 之外的任何数据类型(包括其他复杂类型);访问集合数据,要存取集合列的元素,必须将集合访存到集合变量中并修改集合变量的内容。集合变量可以具有任何下列类型:• SPL 例程中的变量• GBase 8s ESQL/C 程序中的主变量;ROW 数据类型是一个或多个元素(称为字段)的有序集合。每个字段都具有名称和数据类型。行的字段与表列差不多,但有一些重要的差别:

• 字段没有缺省子句。
• 不能对字段定义约束。
• 只能将字段与行类型一起使用,而不能将其与表一起使用。
存在两种类型的 ROW 数据类型:
• 命名 ROW 数据类型是用其名称标识的。
• 未命名 ROW 数据类型是用其结构标识的。
未命名 ROW 数据类型的结构是其字段的数目(和数据类型的顺序)。
可以将同一个表的不超过 195 列声明为 ROW 数据类型。有关 ROW 数据类型的更多信息,请参阅 ROW 数据类型,已命名和 ROW 数据类型,未命名。
您可以在命名与未命名 ROW 数据类型之间进行强制转型。

单值数据类型具有与数据库中某些其他源数据类型相同的内部结构。源类型可以是内置或扩展数据类型。单值类型与其源类型的区别在于对单值类型定义的支持函数。
同一个表中 DISTINCT 集合数据类型(SET、LIST 和 MULTISET)的列不超过 97 列。同一个表中类型为 DISTINCT(基于 BYTE、TEXT、ROW、或 LVARCHAR 源类型)的列不超过 195 列。(此处的 195 列接近基页大小为 2 Kb 的平台适用的下限。对于基页大小为 4 Kb 的平台,例如 AIX® 系统,这些数据类型的列上限约为 450 列。)

不透明数据类型是完全封装的用户定义的数据类型。对于数据库服务器,不透明数据类型的内部结构是未知的。除 DISTINCT 类型的用户定义类型 (UDT) 之外,源类型是内置类型的 UDT 为不透明数据类型。
内置数据类型 BLOB、BOOLEAN、CLOB 和 LVARCHAR 是作为不透明数据类型来实现的。您无法在跨服务器的分布式操作中访问这些内置不透明数据类型,但是您可以在相同 GBase 8s 实例的其他数据库中进行访问。

有时,使用 CREATE TABLE 语句指定给列的数据类型不适用。当需要存储比当前数据类型所能容纳的值更大的值时,您可以更改列的数据类型。

用户 gbasedbt 拥有内置强制转型。他们控制从一种内置数据类型到另一种内置数据类型的转换。

 数字到数字的转换,当将数据从一种数字数据类型转换为另一种数字数据类型时,偶尔会发现舍入错误。

可以将字符列(具有诸如 CHAR、NCHAR、NVARCHAR 或 VARCHAR 等数据类型)转换为数字列。但是,如果数据字符串包含数字列中任何无效字符(例如:字母 l 而不是数字 1),那么数据库服务器会返回错误。
还可以将数字列转换为字符列。但是,如果字符列不够大,不足以接收数字,那么数据库服务器会生成错误。如果数据库服务器生成错误,那么它不能完成 ALTER TABLE 语句或强制转型,并使列值保留为字符。您就会接收到错误消息,并且会自动回滚语句(不管您是否在事务中)。

您可以将整数列(SMALLINT、INTEGER 或 INT8)转换为 DATE 值。数据库服务器将整数解释为内部格式的 DATE 列的值。您还可以将 DATE 列转换为整数列。数据库服务器将内部格式的 DATE 列存储为表示儒略日期的整数。

可以将 DATE 列转换为 DATETIME 列。但是,如果 DATETIME 列包含的字段比 DATE 列多,那么数据库服务器要么忽略这些字段,要么用零填充这些字段。

使用用户定义的强制转型,创建隐式和显式强制转型的用户拥有这些强制转型。他们控制用户定义的数据类型与其他数据类型之间的强制转型和转换。用户定义的数据类型的开发者必须创建某些隐式和显式强制转型以及用来实现这些强制转型的函数。这些强制转型使用户定义的类型可以表
示为客户机可以处理的格式。
隐式强制转型允许您将用户定义的数据类型转换为内置类型,反之亦然。数据库服务器在必须对表达式进行求值和比较或传递自变量时自动调用单个隐式强制转型。需要多个隐式强制转型的操作会失败。用户可以使用 CAST AS 关键字或双冒号 (::) 强制转型运算符来显式调用隐式强制转型。

与隐式强制转型或内置强制转型不同,数据库服务器决不会自动调用显式强制转型。用户必须使用 CAST AS 关键字或使用双冒号 ( :: ) 强制转型运算符来显式调用它们。确定应用哪种强制转型,单值类型的强制转型。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论