上海腾科教育达梦数据库培训干货分享达梦数据库中集合类型的使用(上)

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 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 IN 1..v.COUNT() LOOP

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

END LOOP;

END;

输出结果

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

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

猜你喜欢

转载自blog.csdn.net/qq_42726883/article/details/108528697