25.PLSQL中的数组
来源:互联网 发布:龚品梅 知乎 编辑:程序博客网 时间:2024/05/29 02:12
在上一文<<24.PLSQL中的索引表>>中,我们介绍了oracle中的索引表的使用,之前提到过索引表类似C语言中的数组,本文介绍一种PLSQL中真正的数组---Varray。Varray具有以下特点:
1、Varray是固定长度的数组,在创建时需要制定数组的长度和类型。
2、Varray可以放置重复的元素。
3、Varray是一种可以在PLSQL外进行编译的类型,它的声明周期和作用域都是全局的,可被当做用户自定义的一种数据类型使用。如下,我们创建了一个名叫projects_varray的数组后,用sql developer可以看到这个数据类型,我们可以像使用普通的类型如,number、varchar2一样使用它:
一、创建数组
创建数组的语法如下:
create or replace type 数组名称 is varray of 数组元素类型
如下面的例子,我们创建了一个名叫projects_varray的数组,数组中元素的类型为varchar2(20)。
create or replace type projects_varray is varray(10) of varchar2(20);
二、创建使用数组作为字段的数据表
一旦创建好数组之后,我们可以像使用普通的数据类型一样的使用数组,如下,我创建了一个叫做mydept的数据表,它的第三个字段就是用的projects_varray数组,表示每个部门完成的项目列表。
create table mydept(deptnum number,dname varchar2(20),projects projects_varray);
三、向含有数组的数据表中插入数据
通过以下的方式向含有数组的数据表插入数据:
insert into mydept values (1,'系统软件部',projects_varray('NGP','Pecstart'));使用select语句查看我们刚才查入的数据,发现结果如下:
数组一旦创建成功,其使用方法其实已经和普通的数据类型没有两样了,比如我们还可以和普通类型一样修改数据表的字段:
update mydept set projects=projects_varray('GNP','Pecstar','IEMS') where deptnum=1;再次查询修改后的数据,得到的结果如下:
四、在PLSQL中使用数组
以上的代码都是在plsql语句块之外执行的,我们也可以把数组的定义放到PLSQL里面,如下面的代码,在declare块定义了一个数组projects_varray2:
declare type projects_varray2 is varray(10) of varchar2(20); begin null;end;/我们先留意下在declare里面创建的数组和在外面创建数组的语法有什么不同?答案就是在declare里面没有create or replace 关键字,这也就限定了创建的数据类型的作用域和声明周期只能在这个语句块之内,这也就是之前我们介绍过的记录类型record、索引表类型table的只能在创建它的plsql语句内使用的原因。
创建好数组之后,我们也可以像使用索引表一样对数组进行遍历:
declare type projects_varray2 is varray(4) of varchar2(20); v_projects projects_varray2:=projects_varray2('NGP','Pecstar','IEMS',NULL);begin v_projects(4):='IEEM'; for x in v_projects.first .. v_projects.last loop dbms_output.put_line(v_projects(x)); end loop;end;/结果如下:
0 0
- 25.PLSQL中的数组
- plsql 数组
- PLSQL数组
- PLSQL学习 数组专题
- PLSQL中的变量使用
- PLSQL中的变量使用
- plsql中的子类型
- plsql中的循环
- plsql中的集合
- plsql中的异常处理
- PLSQL中的&字符处理
- PLSQL中的循环语句
- PLSQL中的存储过程
- PLSQL学习(二) 数组专题
- c#将数组传入plsql
- oracle plsql 中的循环实例
- PLSQL Developer中的乱码问题
- 解决plsql中的乱码问题
- React Native高手进阶
- JAVA字符串转日期或日期转字符串
- Python 编程小问题汇总(一)
- 给大学生的几条良心建议
- github开源组件实现android 底部菜单栏
- 25.PLSQL中的数组
- Webpack2 完整踩坑教程(五)
- ubuntu root初始登录和root和user切换
- MySQL、Oracle和SQL Server的分页查询语句
- 第81篇ES之更新题库到索引(二)及mongo数据库操作及mongo-connector同步及compact及count
- POJ
- 大话设计模式c++实现1——简单工厂模式 Simple Factory Pattern
- 转接IC GM8905:TTL转LVDS 24位FPD-LINK II发送器
- iBET online Casino Rescue Fund Bonus