首页 > 数据库 > 国内数据库 > YashanDB 用户自定义类型
YashanDB支持通过PL语法创建一个 UDT(自定义类型)对象,成功创建的UDT对象可以作为数据类型被列字段进行声明。
用户自定义类型只能在HEAP表上使用,不参与普通标量数据类型之间的转换和运算,且存在如下限制:
Object为面向对象概念的抽象数据类型,包含属性和方法,YashanDB支持将一个Object表示的对象结构数据作为列字段存储在物理表中。
在定义一个未包含Nested Table类型属性的Object类型时:
Object类型的声明方法与普通标量数据类型相同,且可通过对象初始化方法插入或更新数据。
Object类型数据通过表别名.列名.属性名的方式查询。
在定义一个包含Nested Table类型属性的Object类型时:
示例(HEAP表)
Varray为一个包含有序元素的数组集合,YashanDB支持将一个Varray表示的数组结构数据作为列字段存储在物理表中。
Varray类型的声明方法与普通标量数据类型相同,且可通过对象初始化方法插入或更新数据。
Varray类型数据可通过如下方式查询:
示例(HEAP表)
Nested Table为一个与表一样包含多行元素的集合,YashanDB支持将一个Nested Table表示的表结构数据作为列字段存储在物理表中。
Nested Table的数据并不是直接存储在所声明的表中,而是需要新建一个嵌套表存储。因此,定义一个Nested Table类型的列字段,或者一个包含了Nested Table类型属性的列字段时,需要同时指定该Nested Table数据存储的嵌套表信息用于新建。
新建的嵌套表依附于列字段所在主表,不可以单独对其执行DDL/DML操作,随着主表(或主表分区)的drop/truncate而drop/truncate。
通过DBA_NESTED_TABLES/USER_NESTED_TABLES/ALL_NESTED_TABLES可查询嵌套表相关信息。
Nested Table类型的声明方法见 CREATE TABLE中nested_table_clause子句描述。
可通过对象初始化方法插入或更新Nested Table数据。
对Nested Table数据的查询需使用table()方法,语法详见SELECT语句中的 table_collection_expression描述。
示例(HEAP表)
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70028812/viewspace-3079381/ ,如需转载,请注明出处,否则将追究法律责任。