数据库中嵌套表
来源:互联网 发布:手机突然没有4g网络 编辑:程序博客网 时间:2024/05/18 01:31
为了让嵌套表类型能在数据表中使用,要求嵌套表类型必须保存到数据字典中,
因此要使用CREATE TYPE语句创建一个持久的嵌套表类型。
--创建嵌套表类型
CREATE TYPE empname_type IS TABLE OF VARCHAR2(20);
--创建数据表时指定嵌套表列,同时要使用STORE AS 指定嵌套表的存储表
CREATE TABLE dept_nested
(deptno NUMBER(2),--部门编号
dname VARCHAR2(20),--部门名称
emplist empname_type --部门员工列表
)NESTED TABLE emplist STORE AS empname_table;
步骤一:使用CREATE TYPE定义一个嵌套表类型,在定义了类型之后,类型被保存到Oracle
数据字典中,以便向对待普通的列一样来使用表类型。
步骤二:在定义了嵌套表类型后,可以像使用普通的列一样使用嵌套表类型,但是在数据表
定义的末尾要使用NESTED TABLE 语句给嵌套表指明一个存储表的名字,用来存储嵌套表里
的数据。
表中嵌套表列的内容是单独进行存放的,ORACLE将嵌套表列的内容存储到创建表时指定的存储
表中。数据库表中的列实际上是指向对存储表的一个引用,类似于一个REF变量。存储表中的
内容是不能直接进行访问的,必须通过SQL语句来操纵存储表中的数据。
DECLARE
emp_list empname_type := empname_type('史密斯','杰克','马丁','斯大林','布什','小平');
BEGIN
--可以在INSERT语句中传入一个嵌套表实例
INSERT INTO dept_nested
VALUES(10,'国务院',emp_list);
--也可以直接在INSERT语句中实例化嵌套表
INSERT INTO dept_nested
VALUES(20,'财务司',empname_type('李林','张杰','马新','蔡文'));
--从数据库表中查询出嵌套表实例
SELECT emplist INTO emp_list FROM dept_nested WHERE deptno = 10;
--对嵌套表进行更新,然后使用UPDATE语句将嵌套表实例更新回数据库
emp_list(1) := '少校';
emp_list(2) := '大校';
emp_list(3) := '大校';
emp_list(4) := '大校';
emp_list(5) := '大校';
emp_list(6) := '大校';
--使用更改过的emp_list更新嵌套表列
UPDATE dept_nested
SET emplist = emp_list
WHERE deptno = 10;
END;
删除数据字典中的嵌套表类型,可以使用DROP TYPE语句,
DROP TYPE empname_type;
因此要使用CREATE TYPE语句创建一个持久的嵌套表类型。
--创建嵌套表类型
CREATE TYPE empname_type IS TABLE OF VARCHAR2(20);
--创建数据表时指定嵌套表列,同时要使用STORE AS 指定嵌套表的存储表
CREATE TABLE dept_nested
(deptno NUMBER(2),--部门编号
dname VARCHAR2(20),--部门名称
emplist empname_type --部门员工列表
)NESTED TABLE emplist STORE AS empname_table;
步骤一:使用CREATE TYPE定义一个嵌套表类型,在定义了类型之后,类型被保存到Oracle
数据字典中,以便向对待普通的列一样来使用表类型。
步骤二:在定义了嵌套表类型后,可以像使用普通的列一样使用嵌套表类型,但是在数据表
定义的末尾要使用NESTED TABLE 语句给嵌套表指明一个存储表的名字,用来存储嵌套表里
的数据。
表中嵌套表列的内容是单独进行存放的,ORACLE将嵌套表列的内容存储到创建表时指定的存储
表中。数据库表中的列实际上是指向对存储表的一个引用,类似于一个REF变量。存储表中的
内容是不能直接进行访问的,必须通过SQL语句来操纵存储表中的数据。
DECLARE
emp_list empname_type := empname_type('史密斯','杰克','马丁','斯大林','布什','小平');
BEGIN
--可以在INSERT语句中传入一个嵌套表实例
INSERT INTO dept_nested
VALUES(10,'国务院',emp_list);
--也可以直接在INSERT语句中实例化嵌套表
INSERT INTO dept_nested
VALUES(20,'财务司',empname_type('李林','张杰','马新','蔡文'));
--从数据库表中查询出嵌套表实例
SELECT emplist INTO emp_list FROM dept_nested WHERE deptno = 10;
--对嵌套表进行更新,然后使用UPDATE语句将嵌套表实例更新回数据库
emp_list(1) := '少校';
emp_list(2) := '大校';
emp_list(3) := '大校';
emp_list(4) := '大校';
emp_list(5) := '大校';
emp_list(6) := '大校';
--使用更改过的emp_list更新嵌套表列
UPDATE dept_nested
SET emplist = emp_list
WHERE deptno = 10;
END;
删除数据字典中的嵌套表类型,可以使用DROP TYPE语句,
DROP TYPE empname_type;
- 数据库中嵌套表
- Sybase数据库中在SQL中嵌套简单逻辑判断
- Oracle数据库表嵌套查询问题
- 嵌套评论的数据库表设计
- 嵌套评论的数据库表设计
- jsp中数据库的多层while循环嵌套查…
- 循环中读取数据库、嵌套循环引起的性能问题
- 往数据库中插入数据,使用嵌套、集合查询
- 数据库 嵌套查询
- 数据库事务嵌套
- 数据库嵌套异常
- SQL数据库嵌套查询
- ORACLE中嵌套子表查询
- 数据库语句大全之多表查询/嵌套查询/子查询
- 嵌套评论的数据库表设计(路径枚举)
- 在html中嵌套php将数据库中的每条记录取出来
- 嵌套表
- 嵌套表
- IOS开发之dispatch_once创建单例
- 你真的懂任务管理器中有关内存的参数Private(提交大小)和working set(工作设置)吗?
- php读取html内容
- 关于XML文档和JAVA中的JTree之间如何转换的问题
- VIM之_vimrc配置
- 数据库中嵌套表
- 单例模式、线程安全单例模式详解
- 膨胀腐蚀讲解
- eclipse布局的layout和layout data
- 提示“该程序集不支持部分受信任的调用方”解决方法
- Character Controller 浅析
- iPhone模拟触屏实现事件教程
- jdom解析xml
- throw与throws的区别