• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

沧海·旭日

旭日东升处 沧海碧波殊
  • 博客园
  • 联系
  • 订阅
  • 管理

公告

View Post

嵌套表和可变长数组示例(SQL)

ORACLE里怎样实现数组的功能呢,嵌套表又是什么呢?

--嵌套表和可变长数组示例:

 

CREATE TYPE animal_ty AS OBJECT (
  breed 
varchar2(25),
  names 
varchar2(25),
  birthdate date);
/**//*
 create or replace type myTableType as table of varchar2(30);
*/


CREATE TYPE animals_nt as table of animal_ty;

create table breeder
(breedername 
varchar2(25),
 animals     animals_nt)
nested 
table animals store as animals_nt_tab;


insert into breeder 
values('mary',animals_nt(animal_ty('dog','butch',to_date('3-12-12','dd-mm-yy')),
animal_ty(
'dog','rover',to_date('03-12-12','dd-mm-yy')),
animal_ty(
'dog','julio',to_date('03-12-12','dd-mm-yy')))); 

insert into breeder 
values('jane',animals_nt(animal_ty('cat','an',to_date('31-03-97','dd-mm-yy')),
animal_ty(
'cat','jame',to_date('31-03-97','dd-mm-yy')),
animal_ty(
'cat','killer',to_date('31-03-97','dd-mm-yy'))));


 
select * from    breeder;
 
 
--查询嵌套表
select names, birthdate 
  
from table (select animals from breeder);


select names, birthdate
  
from table (select animals from breeder where breedername = 'mary')
 
where names = 'rover';   
 
 
delete from table(select animals from breeder) where breed='cat'
 
drop table breeder;
    

 
 
--可变长数组

CREATE TYPE comm_info AS OBJECT
( 
--此类型为通讯方式的集合
  no        number(3), --通讯类型号
  comm_type varchar2(20), --通讯类型
  comm_no   varchar2(30) --号码
);

--2、创建可变数组comm_info_list

CREATE TYPE comm_info_list AS 
  VARRAY(
50) OF comm_info;


--3、创建表

create table user_info
( 
user_id number(6), --用户ID号
  user_name varchar2(20), --用户名称
  user_comm comm_info_list  --与用户联系的通讯方式
);


--4、向可变数组插入记录

insert into user_info
values(1, 'mary', comm_info_list(comm_info(1, '手机', '13651401919'),
                                 comm_info(
2, '呼机', '1281234567'))
       );
insert into user_info
values (2, 'carl', comm_info_list(comm_info(1, '手机', '13901018888'),
                                  comm_info(
2, '呼机', '1281234567'))
   );                       
insert into user_info
values (2, 'badboy', comm_info_list(comm_info(1, '手机', '133546898888'),
                                    comm_info(
2, '呼机', '12545541'),
                                    comm_info(
3,'EMAIL','changhai-xuri@163.com'))
   );
commit;


--5、查询可变数组

select user_comm from user_info where user_id = 2;
select comm_type, comm_no
  
from table (select user_comm from user_info where user_id = 1)
 
where no = 1;

posted on 2006-11-05 17:15  changhai-xuri  阅读(525)  评论(0)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3