DM PL/SQL的使用过程中,如果我们想储存单个的数据,我们可以利用声明变量的方式来存储,如果我们想存储单行多列的数据,我们可以用到记录类型(record),如果我们想保存单列多行的数据,则可以利用集合类型的方式来存储。本文就将给大家介绍达梦数据库中常用的几种集合类型以及他们的特点。
一.索引表
索引表的特点:
1.可以使用数字或者字母作为下标
2.以数字做下标时可以使用负数
3.只能在PL/SQL块中使用,无法作为表字段
下面进行一些测试,首先是数字做下标的索引表
declare
type index_tab_type is table of varchar(30) index by int;
v_table index_tab_type;
begin
v_table(-1):='hello';--设定下标为-1的元素的值
v_table(1) :='and '; --设定下标为1的元素的值
v_table(5):='world';
print('元素个数为:'||v_table.count);
print('第一个元素是'||v_table(v_table.first));--输出第一个元素
print('最后一个元素是'||v_table(v_table.last)); --输出最后一个元素
end;
执行结果如下
然后是字母做下标的索引表
declare
type index_tab_type is table of varchar(30) index by varchar(1);
v_table index_tab_type;
begin
v_table('a'):='hello';--设定下标为-1的元素的值
v_table('c'):='world';
print('元素个数:'||v_table.count);
print('第一个元素'||v_table(v_table.first));
print('最后一个元素'||v_table(v_table.last));
end;
输出结果
可以看到,当采用字符做下标的时候,索引表的存储类似与键值(key-value)的存储方式
二.Varray(变长数组)
Varray的特点:
1.声明的时候需要声明最大容量。
2.首次使用时需要初始化。
3.初始化时实际大小为0,需要利用extend方法来扩张上限才能增加元素。
这里我们换一种方式,把示例库DMHR中employee表上ID为1001至1005的5个人的名字存入此varray内,测试如下
DECLARE
TYPE MY_ARRAY_TYPE IS VARRAY(10) OF VARCHAR(100); --声明一个最大容量为100的varray
v MY_ARRAY_TYPE;
BEGIN
v:=MY_ARRAY_TYPE(); --初始化varray
FOR I IN 1..5 LOOP
v.EXTEND(); --扩张上限
SELECT employee_name INTO v(I) FROM dmhr.employee
WHERE employee_id=1000+i;
END LOOP;
PRINT ' v.COUNT()='||v.COUNT();
FOR I IN 1..v.COUNT() LOOP
PRINT'v('||i||')='||v(i);
END LOOP;
END;
输出结果
需要注意的是,varray在使用时一定要利用extend来扩张上限,不然会有收集下标越界的报错。
因为篇幅原因,本期的内容就到这里了,在下一期的分享中,我们会继续向大家介绍嵌套表以及数组类型的使用,敬请期待。
上海腾科教育科技有限公司聚焦ICT人才培养和教育服务、培养数字化时代的新型ICT人才、促进良性的ICT人才生态发展,提供面授教育、在线教育、IT人才培养与就业、高校专业共建与实验室建设、企业人才定制培养,以及教育科技领域内的技术开发、咨询、服务以及解决方案,专注高校ICT课程课件研发、基于华为公有云的云实验实训平台建设,致力于ICT技术在高等院校的引进、开发和推广,是一家全国性的专业ICT行业技术认证服务公司。
腾科教育是华为授权的培训合作伙伴,专业提供华为ICT技术架构认证、平台与服务认证、行业服务认证等华为职业认证服务,连续多年荣获华为年度最佳合作伙伴贡献奖、华为优秀战略合作伙伴、上海HCIE精英俱乐部伙伴,连续多年举办腾科技术嘉年华华为专场,并协办华为ICT大赛、华为生态伙伴精英赛伙伴赛分赛场、华为人才双选会上海场等活动和赛事,提供面向华为生态合作伙伴和ICT学员的人才供需双选平台及ICT学员就业通道,培养ICT行业所需创新型、融合型人才。