PLSQL中的记录、集合
1.6记录
1.6.1记录的概念
记录是一种复合数据类型,记录类似于一个一行多列的表,当然我们也可以声明记录类型为一行一列,不过并没有实际意义,这种情况下我们应该使用变量。
1.三种方式定义记录
1)基于表的记录
我们使用表名%ROWTYPE来定义基于表的记录
比如:声明单个字符的引用型变量----》表名.表字段%type
三个内存空间的值,可能不在一起
比如:声明记录型变量----》表名%rowtype
2)基于游标的记录
发现游标ROWTYPE关键字,查找游标引用的列,根据列名查找数据类型,构造记录类型
C1为游标关键字,对应的列为deptno和dname列,
3)用户自定义的记录
这种记录类型多于动态SQL游标匹配使用
定义数据类型RECORD_TYPE(记录类型),根据数据类型定义变量R_USER_DEFINE
2.记录的兼容性
定义2个相同的类型,定义了2个变量,第一个记录类型赋值,第二记录类型赋值,然后把第一个记录类型的值赋值给第二个记录类型,会报错,因为Oracle会认为2个记录类型是不同的记录类型
3.嵌套记录
将一种记录类型嵌套另一个记录类型的定义部分,可以构造出嵌套记录
1.7集合
基本的集合相当于一个一列多行的表,
1.7.1pl/sql种有三种集合类型
1索引表(index)
1)索引表练习
Type t_index_table is table of number index by pls_integer;
----》定义一个类型存放number的索引表
Index_table.Next(1)表示打印下标为1的下一个下标
—》下标会从小到大排列,和定义的顺序没有关系
2 嵌套表(没有index)
1)嵌套表练习
嵌套表需要进行初始化,嵌套表每次存放元素之前需要扩展
如果不初始化,会报没有初始化,如果没有扩展内存,就会报下标越界
3 变长数组
1)变成数组练习
Varray(5)–》表示这个变长数组最多为5个元素,带参数的初始化
4.集合的方法
1)count函数练习
2)FIRST&LAST函数练习
2)PRIOR&NEXT函数练习
3)exits函数练习
4)limit函数练习
显示最大的元素数量
5)delete过程练习
Delete()删除所有元素,
delete(n)删除下标为n的元素----》delete(n)
DELETE(n,m)删除下标在n到m之间的元素
Delete不能用于变长数组里
5)trim过程练习
嵌套表,变长数组,----》清除元素的最后一个值
Trim(n)----》指定删除几个元素
Trim不支持索引表,会报错
5)extend过程练习
只要嵌套表和变长数组需要申请扩展内存,当申请了内存后,之前定义的下标数会加1,索引表不需要
5.多层集合
我们将一个集合类型作为另一个集合的元素,可以构造出多层集合
T_varray 【varray(5)】嵌套t_varray_s 【varrary(2)】,
----》表示T_varray_s里有2个T_varray
T_varr_s里的第一组的下标为t_varry_s(1)(1) ,t_varry_s(1)(2),t_varry_s(1)(3)。。。。。。
T_varr_s里的第二组的下标为t_varry_s(2)(1) ,t_varry_s(2)(2),t_varry_s(2)(3)。。。。。。
6.记录集合
记录是1行多列,集合是1列多行
将记录类型放入到一个集合中,则可以构造一个基于记录的集合
通过集合解决多行问题,通过记录解决多列的问题
此时记录集合就可以缓存整张表的内容