5. PLSQL中的记录、集合

本文详细介绍了PLSQL中的记录和集合类型,包括基于表、游标和用户自定义的记录定义,以及记录的兼容性和嵌套。在集合方面,讲解了索引表、嵌套表和变长数组的使用,包括相关方法如count、first/last、exists等,并探讨了多层集合和记录集合的应用,强调它们在处理多行多列数据时的作用。
摘要由CSDN通过智能技术生成

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列多行
将记录类型放入到一个集合中,则可以构造一个基于记录的集合
通过集合解决多行问题,通过记录解决多列的问题
此时记录集合就可以缓存整张表的内容
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值