English
购物车图片 购物车 ( )
专业的品牌服务,为您创造更高的价值
总体概述 客户评价

【干货分享】达梦数据库中集合类型的使用(上)



在DM PL/SQL的使用过程中,如果我们想储存单个的数据,我们可以利用声明变量的方式来存储,如果我们想存储单行多列的数据,我们可以用到记录类型(record),如果我们想保存单列多行的数据,则可以利用集合类型的方式来存储。本文就将给大家介绍达梦数据库中常用的几种集合类型以及他们的特点。


一.索引表


索引表的特点:


1.可以使用数字或者字母作为下标

2.以数字做下标时可以使用负数

3.只能在PL/SQL块中使用,无法作为表字段

下面进行一些测试,首先是数字做下标的索引表


declare 

  type index_tab_type is table of varchar(30index 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(30index 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方法来扩张上限才能增加元素。

这里我们换一种方式,把示例库DMHRemployee表上ID100110055个人的名字存入此varray内,测试如下


DECLARE

TYPE MY_ARRAY_TYPE IS VARRAY(10OF VARCHAR(100); --声明一个最大容量为100varray

v MY_ARRAY_TYPE;

BEGIN

v:=MY_ARRAY_TYPE();  --初始化varray

FOR IN 1..LOOP

v.EXTEND();  --扩张上限

SELECT employee_name INTO v(IFROM dmhr.employee

WHERE employee_id=1000+i;

END LOOP;

PRINT ' v.COUNT()='||v.COUNT();

FOR IN 1..v.COUNT() LOOP

PRINT'v('||i||')='||v(i);

END LOOP;

END;

输出结果


【干货分享】达梦数据库中集合类型的使用(上)

 

需要注意的是,varray在使用时一定要利用extend来扩张上限,不然会有收集下标越界的报错。


因为篇幅原因,本期的内容就到这里了,在下一期的分享中,我们会继续向大家介绍嵌套表以及数组类型的使用,敬请期待。




客户资料:
年缴保费:
客户需求:



在DM PL/SQL的使用过程中,如果我们想储存单个的数据,我们可以利用声明变量的方式来存储,如果我们想存储单行多列的数据,我们可以用到记录类型(record),如果我们想保存单列多行的数据,则可以利用集合类型的方式来存储。本文就将给大家介绍达梦数据库中常用的几种集合类型以及他们的特点。


一.索引表


索引表的特点:


1.可以使用数字或者字母作为下标

2.以数字做下标时可以使用负数

3.只能在PL/SQL块中使用,无法作为表字段

下面进行一些测试,首先是数字做下标的索引表


declare 

  type index_tab_type is table of varchar(30index 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(30index 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方法来扩张上限才能增加元素。

这里我们换一种方式,把示例库DMHRemployee表上ID100110055个人的名字存入此varray内,测试如下


DECLARE

TYPE MY_ARRAY_TYPE IS VARRAY(10OF VARCHAR(100); --声明一个最大容量为100varray

v MY_ARRAY_TYPE;

BEGIN

v:=MY_ARRAY_TYPE();  --初始化varray

FOR IN 1..LOOP

v.EXTEND();  --扩张上限

SELECT employee_name INTO v(IFROM dmhr.employee

WHERE employee_id=1000+i;

END LOOP;

PRINT ' v.COUNT()='||v.COUNT();

FOR IN 1..v.COUNT() LOOP

PRINT'v('||i||')='||v(i);

END LOOP;

END;

输出结果


【干货分享】达梦数据库中集合类型的使用(上)

 

需要注意的是,varray在使用时一定要利用extend来扩张上限,不然会有收集下标越界的报错。


因为篇幅原因,本期的内容就到这里了,在下一期的分享中,我们会继续向大家介绍嵌套表以及数组类型的使用,敬请期待。




相关案例
2020 - 07 - 24
点击次数: 0
在生产环境中,当我们误操作删除了重要数据时,可以使用闪回查询来找回原来的数据,但当表被删除或者数据库没有开启闪回功能时,则无法使用闪回来获取原有的表数据;此时我们可以使用基于归档日志的时间点的恢复(不完全恢复)来达到恢复数据或恢复表的目的。本章介绍DM8数据库如何使用归档日志文件将数据库恢复到指定时间点的状态。本章内容已在如下环境上测试:①操作系统:中标麒麟7;②数据库版本:达梦8;相关关键字:D...
2020 - 06 - 19
点击次数: 0
DM8介绍DM8作为达梦公司新一代自研数据库,融合了分布式、弹性计算与云计算的优势,对灵活性、易用性、可靠性、高安全性等方面进行了大规模改进,多样化架构充分满足不同场景需求,支持超大规模并发事务处理和事务-分析混合型业务处理,动态分配计算资源,实现更精细化的资源利用、更低成本的投入。一个数据库,满足用户多种需求,让用户能更加专注于业务发展。自DM8产品上线以来,广受应用,达梦大学已于2020年6月...
2020 - 06 - 18
点击次数: 0
学员们,大家好呀!一年一度的618电商大促又来啦大家都准备买些什么?零食、书籍、水果.....还是手机、笔电、游戏机?不趁着活动囤一波,对得起手机里的APP啵?来,一起喊口号:钱包可能干扁,购物欲望不会减!花呗可能超出,拼单付款不会输!月光可能不停,优惠算法我会赢!加购可能太多,购完手也不会剁!优惠券、专属红包、叠蛋糕、组团助力.....在优惠的套路里,哪有人能逃脱它的魔咒?!只怪,为什么身边没个...
2020 - 06 - 10
点击次数: 0
DM8介绍DM8作为达梦公司新一代自研数据库,融合了分布式、弹性计算与云计算的优势,对灵活性、易用性、可靠性、高安全性等方面进行了大规模改进,多样化架构充分满足不同场景需求,支持超大规模并发事务处理和事务-分析混合型业务处理,动态分配计算资源,实现更精细化的资源利用、更低成本的投入。一个数据库,满足用户多种需求,让用户能更加专注于业务发展。自DM8产品上线以来,广受应用,达梦大学已于2020年6月...
官网微信公众号官方微信公众号
官方技术咨询一群官方技术咨询二群
官方技术咨询二群官方技术咨询三群
官网培训咨询QQ官网培训咨询QQ
支持:dmtech@dameng.com
地址:中国·武汉·东湖新技术开发区高新大道999号未来科技大厦C3栋16-19层
咨询热线:400 991 6599
传真:+86 0755-2788 8009
友情链接:
鄂Copyright ©2017 - 2019 武汉达梦数据库有限公司
犀牛云提供企业云服务
X
3

电话号码

4

阿里旺旺设置

1

在线咨询

等待加载动态数据...

等待加载动态数据...

5

电话号码管理

6

二维码管理

  • 微信二维码

    微信二维码

等待加载动态数据...

等待加载动态数据...

展开