嵌套表
类似于JAVA中的ArrayList,动态数组。
嵌套表是表中之表。
一个嵌套表是某些行的集合,它在主表中表示为其中的一列。
语法:TYPE ... IS TABLE OF type[not null]
创建嵌套表步骤:
?
创建一个对象类型作为嵌套表的基类型
?
基于基类型创建嵌套表的基础类型
基于该基础类型创建嵌套表
假设有一个关于动物饲养员的表,希望其中具有他们饲养的动物的信息。
用一个嵌套表,就可以在同一个表中存储饲养员和其饲养的全部动物的信息。
步骤1创建一个对像类型,存放饲养动物的信息
CREATE TYPE annimal_ty AS OBJECT
(
breed varchar2(25),
name varchar2(25),
birthdate date
)
步骤2基于以上对象类型,创建一个嵌套表基础类型
CREATE TYPE annimal_ny IS TABLE OF annimal_ty;
步骤三创建嵌套表
CREATE TABLE breeder
(
breedername varchar2(25),
animals annimal_ny
)nested table animals store as annimal_ty_tab;
向该嵌套表插入数据
INSERT INTO breeder
(breedername,animals)
VALUES
(
'TIGER',annimal_ny(annimal_ty('dog','jack',to_date('2011-07-09','YYYY-MM-DD')),
annimal_ty('cat','jas',to_date('2011-07-09','YYYY-MM-DD')))
)
INSERT INTO breeder
VALUES
(
'LEE',annimal_ny(annimal_ty('LION','BOST',TO_DATE('2011-07-09','YYYY-MM-DD')),
annimal_ty('FISH','HEBI',TO_DATE('2011-07-09','YYYY-MM-DD')))
)
查询数据:
--1用table函数
SELECT BREEDERNAME,N.breed,N.name,N.birthdate
FROM BREEDER,TABLE(BREEDER.animals) N
--2
select name,birthdate
from table(select animals from breeder where breedername='LEE')