自定义类型一般分为两种,object类型和table类型。可用关键字create type或者直接用type定义自定义类型。
create type 变量 as table of 类型
---------------------------------------------
create type 变量 as object(
字段1 类型1,
字段2 类型2
);
type 变量 is table of 类型
-------------------------------------
type 变量 is record(
字段1 类型1,
字段2 类型2
);
区别:
- create 后面用 as , type 后面用 is
- create 是创 object , 而 type 是创 record
- type一般在存储过程和函数中定义,使用范围也限于所在过程或函数
- create声明对象类型,可以过程或函数中使用,还可以在定义表时,作为字段的类型。
Type
1. 定义数据记录类型
记录类型允许在一个类型中包含若干类型不同的字段,字段类型可以是基本数据类型,也可以是另一个复合数据类型。
TYPE type_name IS RECORD(
字段1 类型1,
字段2 类型2,
...
字段n 类型n
);
2.定义表记录
2.1 索引表
TYPE type_name IS TABLE OF element_type [NOT NULL] INDEX BY subscript_type;
2.2 嵌套表
TYPE type_name IS TABLE OF element_type [NOT NULL];
3.定义游标类型
TYPE type_name IS REF cursor;
CREATE
CREATE关键字用于创建一个新数据类型。
1. 创建一个新的对象类型
CREATE TYPE v_new_datatype AS OBJECT
(
字段1 类型1,
字段2 类型2,
...
字段n 类型n
);
**2. 创建一个新的表 **
Create Table table_new_datatype
(
var1 type,
var2 type,
...
);
3. 自定义VARRY
CREATE TYPE varray_type_name AS VARRAY(n) of <element_type>
Record和Object的区别
在用作形式参数时,记录类型和对象类型有很多相同之处。在将它们作为游标、函数或过程的形式参数以前,事先都必须显式定义一个记录类型或者对象类型。
Record只能够用在PL/SQL中,Object可以用于SQL, 还可带成员函数;Record变量声明后可以直接使用,Object还要执行初始化函数。