暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

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

达梦大数据 2019-03-22
1742

在上周的分享中,我们介绍了集合类型中的变长数组和索引表,今天我们讲一讲剩下的几种跟集合有关的数据类型。

 

嵌套表


嵌套表和varray类型用法类似,主要区别在于嵌套表在使用时不用指定元素上限。

这里我们采用结合游标制造一个比较复杂的例子,我们先采用一个游标ename_cursor来存储job_id为21的员工姓名信息,然后通过遍历游标把对应的员工姓名存储到嵌套表中,相关代码如下:


DECLARE

--下面这句是嵌套表的声明,可以看到这里并不用指定元素上限

TYPE ename_array_type is table of dmhr.employee.employee_name%TYPE;

--定义一个游标

CURSOR ename_cursor is select employee_name from dmhr.employee where job_id=21;

--初始化嵌套表,此时嵌套表为空

ename_arrayename_array_type:=ename_array_type(); --初始化嵌套表

number:=0;

BEGIN

for ename in ename_cursor

loop

i:=i+1;

--执行extend函数,为数组增加一个null元素

ename_array.EXTEND;

ename_array(i):=ename.employee_name;

print(ename.employee_name);

end loop;

--注意嵌套表下标是从1开始的,而不是0

for in 1..ename_array.count()loop

print(ename_array(j));

end loop;

END;

/

执行结果如下,篇幅关系并没有截全。

 


数组类型


前文所述的三种集合类型用法跟oracle较类似,除此之外,在DM PL/SQL中,我们也可以使用直接声明的方式来使用数组类型,也就是array类型。跟大多数编程语言类型,DM PL/SQL中的数组类型可以使用静态或动态的方式定义,具体演示如下。


静态数组:

DECLARE

--TYPE 定义一维数组类型

TYPE Arr IS ARRAY VARCHAR[3];

a Arr;

BEGIN

FOR IN1..LOOP

a[I] :=I*10;

PRINT a[I];

END LOOP;

END;

/


动态数组:

DECLARE

TYPE Arr IS ARRAY VARCHAR[];

a Arr;

BEGIN

a := NEW VARCHAR[4];--动态分配空间

FOR IN 1..LOOP

a[I] :=I*4;

PRINT a[I];

END LOOP;

END;

/



文章转载自达梦大数据,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论