asoka.hang's oracle/java blog
BlogJava
::
首页
::
新随笔
::
联系
::
聚合
::
管理
::
4 随笔 :: 0 文章 :: 0 评论 :: 0 Trackbacks
<
2006年4月
>
日
一
二
三
四
五
六
26
27
28
29
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
1
2
3
4
5
6
常用链接
我的随笔
我的评论
我的参与
留言簿
(1)
给我留言
查看公开留言
查看私人留言
随笔分类
Java
(rss)
Oracle(4)
(rss)
随笔档案
2006年4月 (4)
搜索
最新评论
阅读排行榜
1. ORACLE中的OOP:可变数组的运用(640)
2. ORACLE中的OOP:继承(447)
3. 很妙的一句SQL语句 :)(287)
4. 请保持约束条件的一直存在:最好先add后drop(258)
评论排行榜
1. 请保持约束条件的一直存在:最好先add后drop(0)
2. 很妙的一句SQL语句 :)(0)
3. ORACLE中的OOP:可变数组的运用(0)
4. ORACLE中的OOP:继承(0)
ORACLE中的OOP:可变数组的运用
case:在scott.emp中有一个字段为deptno用来存储部门编号,在关系型数据库中一个字段只能够存储一列值(像ENAME列只能够存储员工姓名的值),要想查询emp与dept两表间的关联值还得运用主从表间的关系,查询效率不高,在emp表中deptno字段并不是很复杂(因为dept表中仅三个字段)的情况下,oracle允许在emp表中的deptno字段里存储一个表,这虽然违反关系型数据库的规则,但是提高了性能。
我们将举一个入库明细的例子来说明可变数组在上面类似情况的应用。
创建一个入库的明细类型mingxitype:
SQL
>
create
or
replace
type mingxitype
as
object
2
(
3
goodsid
varchar
(
15
),
4
incount
int
,
5
providerid
varchar
(
10
)
6
);
7
/
创建一个基于mingxitype类型的可变数组:
SQL
>
create
or
replace
type arrmingxitype
as
varray(
100
)
of
mingxitype;
2
/
创建一个产品入库主表:
SQL
>
create
table
instock
2
(
3
orderid
int
primary
key
,
4
indate date,
5
mingxi arrmingxitype
6
);
向主表中插入数据:
SQL
>
insert
into
instock
values
(
1001
,to_date(
'
2006-1-1
'
,
'
YYYY-MM-DD
'
),arrmingxitype
2
(mingxitype(
'
101
'
,
10
,
'
S01
'
),mingxitype(
'
102
'
,
30
,
'
S05
'
)));
通过查询可以查出主表instock中的字段mingxi中其实包括了一张表的内容,因为显示出来的arrmingxitype可变数组内容比较零乱,降低了可读性,运用PL/SQL可以读出,但是这里我们用table()函数即可完成这个输出修改,SQL语句如下:
SQL
>
select
*
from
table
(
select
s.mingxi
from
instock s
where
orderid
=
1001
);
GOODSID INCOUNT PROVIDERID
--
------------- ---------- ----------
101
10
S01
102
30
S05
这样,通过在表中插入一个可变数组就将文中case里的问题给解决了。
可变数组也有一定的缺陷,比如更新起来比较麻烦,因为不能更新varray中的单个元素,也就意味着,如果要去更新varray中的某个字段,需得将整个varray中的数据全部重新输入一次,所以,可变数组在应用过程中需得慎重选择,可以将其应用于一些平常不需要去修改数据的环境中,比如医院里医生开的处方归档资料库等case中。
posted on 2006-04-13 16:18
asoka的oracle/java博客
阅读(640)
评论(0)
编辑
收藏
所属分类:
Oracle
新用户注册
刷新评论列表
只有注册用户
登录
后才能发表评论。
网站导航:
博客园
IT新闻
Chat2DB
C++博客
博问
管理
相关文章:
请保持约束条件的一直存在:最好先add后drop
很妙的一句SQL语句 :)
ORACLE中的OOP:可变数组的运用
ORACLE中的OOP:继承
Powered by:
BlogJava
Copyright © asoka的oracle/java博客