一、type / create or repalce type 区别联系
相同:
可用关键字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 是的独立的.
一般定义object的语法:
用
create type 自定义表类型A as table of 自定义Object类型A
和
create type 自定义Object类型A as object(
字段1 类型1,
字段2 类型2
);
与
type 自定义表类型B is table of 类型
和
type 自定义Object类型B is record(
字段1 类型1,
字段2 类型2
);
自定义类型一般分为两中,object类型和table类型.object类似于一个recored,可以表示一个表的一行数据,
object的字段就相当与表的字段.
自定义的table类型需要用的已经定义好的object类型.
数组怎么定义呢:
type typename is table of typedefine index by binary_integer;//若去掉index by binary_integer,则需要每次自动扩展了
CREATE OR REPLACE TYPE typename AS VARRAY(100) OF typedefine;
|
二:type record用法概述
type 自定义Object类型B is record(
字段1 类型1,
字段2 类型2
);
2.1:什么是记录(Record)?
由单行多列的标量构成的复合结构。可以看做是一种用户自定义数据类型。组成类似于多维数组。
将一个或多个标量封装成一个对象进行操作。是一种临时复合对象类型。
记录可以直接赋值。RECORD1 :=RECORD2;
记录不可以整体比较.
记录不可以整体判断为空。
2.2:%ROWTYPE和记录(Record)?
请区别%ROWTYPE和记录(Record)类型。%ROWTYPE可以说是Record的升级简化版。
区别在与前者结构为表结构,后者为自定义结构。二者在使用上没有很大区别。前者方便,后者灵活。在实际中根据情况来具体决定使用。
Record + PL/SQL表可以进行数据的多行多列存储。
三:工作实例
1、
CREATE OR REPLACE TYPE "TYPE_COLUMN"
IS OBJECT
(
STR_COLUMN VARCHAR2(30)
)
2、
CREATE OR REPLACE TYPE "TYPE_TABLE_SPLIT_COLUMNS"
AS table of TYPE_COLUMN
/
3、
CREATE OR REPLACE TYPE "TYPE_TB_RPT_SECU_DAILY_EXT"
AS table of TYPE_RPT_SECU_DAILY_EXT
/
/