2.5.6 数组类型
数组类型包括静态数组和动态数组两类。静态数组是在声明时已经确定数组大小的数组,其长度是预先定义好的,在整个程序中,一旦大小给定后就无法改变。而动态数组则不然,它可以随程序需要而重新指定数组大小。动态数组的内存空间是从堆(Heap)上分配(动态分配)的,通过执行代码为其分配存储空间。当程序执行到这些语句时,才为其分配,程序员自己负责释放内存。需要注意的是,DM中数组下标的起始值为1。理论上DM支持的静态数组每个维度的最大长度为65534B,动态数组每个维度的最大长度为2147483646B,但是数组最大长度同时受系统内部堆栈(静态数组)和堆(动态数组)空间大小的限制。如果超出堆栈/堆的空间限制,系统就会报错。
1.静态数组
静态数组的语法格式如下:

【例2-7】数组类型定义举例。


2.动态数组
动态数组与静态数组的用法类似,区别只在于动态数组没有指定下标,需要动态分配空间。动态数组的语法格式如下:

多维动态数组分配空间的语法格式如下:

另外,可以使用如下两种语法格式对多维数组的某一维度进行空间分配。其中,第二种语法格式使用自定义类型来创建动态数组,前提是先定义好一个类型,该语法格式适用于含有精度或长度的数据类型。

【例2-8】动态数组使用举例。

【例2-9】使用自定义类型定义动态数组举例。

【例2-10】多维动态数组举例。

DM还支持索引数组,如例2-11所示。
【例2-11】索引数组举例。

在DM中,可以利用查询语句查询数组信息。语法格式如下:

目前,DM只支持一维数组的查询。数组类型可以是记录类型或普通数据库类型。记录类型数组查询出来的列名为记录类型的每个属性名称。普通数据库类型数组查询出来的列名均为“C”。
【例2-12】数组与表的连接查询举例。

返回结果如下:
