CREATE TYPE 声明创建或替换以下规范:

  • 抽象数据类型(ADT)

  • 独立的可变数组(varray)类型

  • 独立嵌套表类型

  • 不完整对象类型

    不完整类型是由前向类型定义创建的类型。之所以称为不完整,是因为它具有名称,但没有属性或方法。它可以被其他类型引用,允许自定义相互引用的类型。 但是,必须先创建完成类型,然后才能用于创建表的列、对象列或嵌套表类型的列。

CREATE TYPE BODY 声明自带实现该类型的代码。

说明

  • 如果创建的类型规范仅声明属性而不声明方法,则无需创建 Body。

要在 Schema 中创建类型,您必须具有 CREATE TYPE 的系统权限。要在其他用户的 Schema 中创建类型,您必须具有 CREATE ANY TYPE 的系统权限。您可以直接获得这些权限,也可以通过角色获取权限。

必须明确授予该类型的所有者 EXECUTE 对象权限,以访问该类型的定义中引用的所有其他类型,或者必须向该类型所有者授予 EXECUTE ANY TYPE 系统权限。所有者无法通过角色获得这些权限。

如果类型所有者打算授予其他用户对该类型的访问权限,则必须使用 GRANT OPTION 为所有者授予该类型的 EXECUTE 对象权限,或者通过 ADMIN OPTION 授予所有者 EXECUTE ANY TYPE 系统权限。否则,类型所有者没有足够的权限来授予其他用户该类型的访问权限。

说明

本章节只包含部分重点语法节点的格式。

  • 格式为:

  • plsql_type_spec_source 格式为:

    2plsql_type_spec_source

  • object_type_def 格式为:

  • attr_and_element_spec 格式为:

    13attr_and_element_spec

  • element_spec 格式为:

  • el_element_spec_list_cc 格式为:

    el_element_spec_list_cc

  • 格式为:

  • inheritance_overriding_instantiable_clause 格式为:

  • el_element_spec 格式为:

    el_element_spec

  • subprogram_spec 格式为:

  • constructor_spec 格式为:

    constructor_spec

  • 格式为: