(转)oracle嵌套表示例
本文转载自:http://www.cnblogs.com/gisdream/archive/2012/04/13/2445291.html
----嵌套表:就是把一个表中的字段定义为一个表,这个字段表的数据存储在外部的一个表中,
例如下例嵌套表中的数据存储在required_tab表中。
----嵌套表可以有效地代替多个表之间的连接
create type bookobj as object(
title varchar2(40),
author varchar2(40),
catalog_number number(4)
);
/
create type
booklist as table of bookobj;
-----------定义一个嵌套表,该表可以被嵌套在其他表中,他的字段就是bookobj中的字段
/
create table
course_material(
department
char(3),
course
number(3),
required_reading booklist
-----在表中再定义一个表,即booklist表,他就是嵌套在course_material中的表,也就是嵌套表。
------他和主表course_material之间是主从关系,即一条主表记录对应一个嵌套表中的多条记录。
) nested table required_reading store as
required_tab;
/
-----------------------给表和嵌套表输入值,commit后被提交到数据库里保存
declare
v_books
booklist:=booklist(bookobj('ssss','www',444));-------定义一个booklist类型的嵌套表变量v_books,并给出初值。
begin
insert
into course_material
values('cs',101,booklist(bookobj('www','bbb',1),bookobj('aa','dd',33)));
insert into course_material
values('his',301,v_books);
end;
或单独插入一条记录:
insert into course_material
values('ss',102,booklist(bookobj('w','b',1),bookobj('a','d',3)));
-----------------------更新嵌套表操作,即将required_reading作为一个字段
declare
v_books
booklist:=booklist(bookobj('xyz','bbb',111),bookobj('zq','ccc',222));
begin
update
course_material
set required_reading =
v_books
where department = 'his' and
course = 301;
end;
----执行结果为子记录全部被删除,新添加两个bookobj记录
-------------删除嵌套表中的记录
delete from course_material where department =
'his';----对应主表his的嵌套表中的记录将被删除
=============直接对嵌套表进行插入==================
insert into the(select required_reading from
course_material where department='his' )
values('gog','ggg',999)
-----上面红色的表示一个表,注意前面必须加上the,表示是嵌套表。
=============直接对嵌套表进行更新==================
update the(select required_reading from course_material
where department='his' )
set
catalog_number = catalog_number + 10 -----对嵌套表中的字段进行操作
where catalog_number = 111;
=============直接对嵌套表进行删除==================
delete from the(select required_reading from
course_material where department='his' )
where catalog_number = 111;
=========================直接进行嵌套表的查询,只能返回主表的一条记录的子表,即如果course_material返回多于2条的记录则报错
select * from the(select required_reading from
course_material where department='his');
或
select * from
the(select required_reading from course_material where department='his') where
catalog_number=999
报错:select * from
the(select required_reading from course_material where department in
('his','www'))
(转)oracle嵌套表示例的更多相关文章
- Oracle嵌套表
一.介绍 1.定义 嵌套表是表中之表.一个嵌套表是某些行的集合,它在主表中表示为其中的一列.对主表中的每一条记录,嵌套表可以包含多个行.在某种意义上,它是在一个表中存储一对多关系的一种方法. ...
- oracle 嵌套表
--自定义对象 CREATE OR REPLACE TYPE Fas_checksheetinfo_line_obj AS OBJECT( CSID_ID VARCHAR2(32 ...
- 创建oracle数据表示例sql
CREATE TABLE "BRAND_RELATION" ( "ID" NUMBER(10,0) NOT NULL ENABLE, ...
- oracle创建表示例
create table wf_message_weixinqun(dizhi VARCHAR2(200) not null, weixinnicheng VARCHAR2(6) not null,w ...
- oracle ibatis 存储过程 返回游标 嵌套表
自己解决问题了 问题总结: 1.index by表不能存储在数据库中的type中,故选择嵌套表. 2.ibatis不支持oracle的复合数据类型的返回.(个人理解) 3.替代方案:用返回oracle ...
- Oracle创建表语句(Create table)语法详解及示例、、 C# 调用Oracle 存储过程返回数据集 实例
Oracle创建表语句(Create table)语法详解及示例 2010-06-28 13:59:13| 分类: Oracle PL/SQL|字号 订阅 创建表(Create table)语法详解 ...
- oracle:变长数组varray,嵌套表,集合
创建变长数组类型 ) ); 这个变长数组最多可以容纳两个数据,数据的类型为 varchar2(50) 更改元素类型的大小或精度 可以更改变长数组类型和嵌套表类型 元素的大小. ALTER TYPE ...
- oracle 之 数组、嵌套表、SQL查询式 实现多表数据for循环插入指定表
1.基础环境 创建基础表: CREATE TABLE TEST_TAB1( ID INT, NAME VARCHAR2(20) ); CREATE TABLE TEST_TAB2( ID INT, N ...
- Oracle sqlldr使用示例
SQLLDR用于快速的批量导入数据, 示例步骤如下: 1.确定Oracle的连接示例 username/password@sid 我使用的是:system/world @ localorcl sid是 ...
随机推荐
- Activity启动的四种方式
Activity启动方式有四种,分别是: standardsingleTopsingleTasksingleInstance 可以根据实际的需求为Activity设置对应的启动模式,从而可以避免创建大 ...
- Remove Duplicates from Sorted List ,除去链表中相邻的重复元素
Remove Duplicates from Sorted List : Given a sorted linked list, delete all duplicates such that eac ...
- 支付宝app支付java后台流程、原理分析(含nei wang chuan tou)
java版支付宝app支付流程及原理分析 本实例是基于springmvc框架编写 一.流程步骤 1.执行流程 当手机端app(就是你公司开发的app)在支付 ...
- 深入理解虚拟机、容器和Hyper技术
本文首先介绍了操作系统,然后引出容器技术以及虚拟机技术,最后介绍了Docker和Hyper技术.通过本文可以清楚地对三者有感性认识. 操作系统概述 我们可以把操作系统简化为: 操作系统 = 内核 + ...
- glance cache
用在多个glance API server 中,对相同的image文件提供服务.该cache对用户透明. 配置文件有一个image_cache_max_size,超过的话image cache会被修剪 ...
- RadioButton实现多选一
RadioButton实现多选一 一.简介 二.RadioButton实现多选一方法 1.将多个RadioButton放在一个RadioGroup里面 <RadioGroup android:i ...
- Eclipse工具栏上android的机器人小图标不见了
可以通过「Window」⇒「Customize Perspective」⇒「Tool Bar Visibility」Tab画面上选择Android SDK and AVD Manager来显示
- HostFileChangeMonitor
HostFileChangeMonitor 类是 FileChangeMonitor 类型的具体实现. 此类密封,因此无法扩展. 如果要使用现有缓存实现以及监视更改的文件和目录,此类非常有用. 对于每 ...
- Neutron的安全组原理
Security group通过Linux IPtables来实现,为此,在Compute节点上引入了qbr*这样的Linux传统bridge(iptables规则目前无法加载到直接挂在到ovs的 ...
- java继承的一些问题
如果在父类中,你声明了一个静态变量. 然后你有两个子类继承了这个父类.我们想看看这两个子类调用继承的父类的类变量a是不是同一个值. 这时候注意,我们在子类的时候不能重写static int a = a ...