Skip to content

概述

分类

用户自定义类型(User Defined Type,UDT)可分为:结构类型、数组类型、嵌套表类型,三者创建或声明类型时的区别如下表所示。

分类成员/元素父类构造函数指定容量方法
结构类型(OBJECT)
数组类型(VARRAY)
嵌套表类型(TABLE)

特点

构造函数

在创建UDT时,为每个UDT隐式定义了一个构造函数。构造函数是系统提供的函数,用于在SQL语句或PL/SQL代码中构造类型值的实例。构造函数的名称是UDT的名称,参数是用户自定义类型的所有成员变量,返回值是该用户自定义类型。

说明:

结构类型的构造函数支持重载,可以通过CONSTRUCTOR关键字重新自定义零个或多个不同参数的构造函数,且自定义的构造函数优先级高于默认构造函数。

继承(子类和超类)

结构类型类型支持继承关系,被继承的类称为超类、基类或父类。子类在继承父类的属性和方法时,可以扩展自己的属性和方法。

比较和排序

  • 仅支持同一个模式下的同个UDT对象ID的UDT数据比较。
  • 仅支持UDT数据等值和不等值比较。
  • 支持UDT数据IS NULLIS NOT NULL比较。
  • PL/SQL支持表中数据与相同类型的数据等值和不等值比较。
  • PL/SQL支持具有相同成员或元素类型的临时类型的数据比较。
  • 不支持对UDT数据的排序,但若成员类型为基础类型,则支持成员值的排序。

赋值

  • SQL支持初始化赋值、构造函数赋值和复制赋值。
  • PL/SQL支持初始化赋值、构造函数赋值、成员赋值和复制赋值。

成员/元素

  • 构造类型的数据:使用点号.访问对象的成员。例如有一个构造类型OBJ,它有两个成员IDNAME,我们可以用OBJ.IDOBJ.NAME来进行访问。
  • 集合类型的数据:使用索引访问集合中的元素。例如用varr(1)访问varr数组的第一个元素。

依赖

对象类型、可变数组类型和嵌套表类型作为独立对象类型被使用时,需要添加该类型与使用者的依赖关系。

转换函数

不支持UDT和其他类型的相互转换与强制转换。