官术网_书友最值得收藏!

2.5.7 集合類型

1.變長數組

變長數組是一種具有可伸縮性的數組,它有一個最大容量。變長數組的下標是從1開始的有序數字,并提供多種方法操作數組中的項。定義變長數組的語法格式如下:

img

數據類型可以是基本數據類型,也可以是自定義類型或對象、記錄、其他變長數組類型等。變長數組使構造復雜的結構成為可能。

【例2-13】一個簡單的VARRAY使用示例。

img
img

2.索引表

索引表提供了一種快速、方便地管理一組相關數據的方法,是程序設計中的重要內容。通過索引表可以對大量類型相同的數據進行存儲、排序、插入及刪除等操作,從而可以有效地提高程序開發效率,改善程序的編寫方式。

內存索引表是一組數據的集合,數據按照一定規則組織起來,形成一個可操作的整體,是對大量數據進行有效組織和管理的手段之一,通過函數可以對大量性質相同的數據進行存儲、排序、插入及刪除等操作,從而可以有效地提高程序開發效率及改善程序的編寫方式。

內存索引表和數組類似,只是內存索引表使用起來更加方便,但是性能不如數組。數組在定義時需要用戶指定數組的大小,當用戶訪問超過數組大小的數組元素時,系統會報錯;內存索引表相當于一個一維數組,但不需要用戶指定大小,大小根據用戶的操作自動增減。語法格式如下:

img

第一個數據類型是索引表存放數據的類型,這個數據類型可以是基礎數據類型,也可以是自定義類型或對象、記錄、靜態數組,但不能是動態數組;第二個數據類型是索引表的下標類型,目前僅支持INTEGER/INT和VARCHAR兩種類型,分別代表整數下標和字符串下標。對于VARCHAR類型,長度不能超過1024B。

索引表的成員函數可以用來遍歷索引表,或者查看索引表的信息。

【例2-14】索引表舉例。

img

【例2-15】普通的索引表舉例。

img
img

【例2-16】索引表存儲游標記錄舉例。

img

【例2-17】利用索引表管理記錄舉例。

img
img

【例2-18】多維索引表的遍歷舉例。

img
img

3.嵌套表

嵌套表元素的下標從1開始,并且元素個數沒有限制。嵌套表語法格式如下:

img

元素數據類型用于指明嵌套表元素的數據類型,當元素數據類型為一個定義了某個表字段的對象類型時,嵌套表就是某些行的集合,實現了表的嵌套功能。

【例2-19】嵌套表的使用示例。

img

4.集合的屬性和方法

集合類型中的變長數組、索引表和嵌套表都是對象類型的,它們本身有屬性或方法。

(1)COUNT屬性。

COUNT是一個屬性,它用于返回集合中的元素個數。

【例2-20】統計3種集合類型的元素個數。

img
img

(2)DELETE方法。

DELETE方法用于刪除集合中的一個或多個元素。需要注意的是,由于DELETE方法執行刪除操作的位置固定,因此對于可變數組來說沒有DELETE方法。DELETE方法有以下3種形式。

① DELETE:不帶參數的DELETE方法將整個集合刪除。

② DELETE(x):將集合中第x個位置的元素刪除。

③ DELETE(xy):將集合中從第x個元素到第y個元素之間的所有元素刪除。

注意,執行DELETE方法后,集合的COUNT值將會立刻變化;而且當要刪除的元素不存在時,DELETE方法也不會報錯,而是跳過該元素,繼續執行下一步操作。

(3)EXISTS屬性。

EXISTS屬性用于判斷集合中的元素是否存在。語法格式如下:

img

EXISTS(x)判斷位于位置x的元素是否存在,如果存在,則返回TRUE;如果x超出集合的最大范圍,則返回FALSE。

注意,當使用EXISTS屬性判斷時,只要在指定位置處有元素存在即可,即使該位置的元素為NULL,EXISTS屬性也會返回TRUE。

(4)EXTEND方法。

EXTEND方法用于將元素添加到集合的末端,具體形式有以下3種。

① EXTEND:不帶參數的EXTEND方法將一個NULL元素添加到集合的末端。

② EXTEND(x):將x個NULL元素添加到集合的末端。

③ EXTEND(xy):將x個位于位置y的元素添加到集合的末端,也就是在集合末尾擴展x個與第y個元素值相同的元素。

說明:對內存索引表不適用。

(5)FIRST屬性和LAST屬性。

FIRST屬性用于返回集合的第一個元素;LAST屬性則返回集合的最后一個元素。

(6)LIMIT屬性。

LIMIT屬性用于返回集合中的最大元素個數。由于嵌套表沒有上限,因此當嵌套表使用LIMIT屬性時,總是返回NULL。

(7)NEXT屬性和PRIOR屬性。

NEXT屬性和PRIOR屬性返回指定位置之后或之前的元素。使用NEXT屬性和PRIOR屬性時,要有指定位置的參數。語法格式如下:

img

其中,NEXT(x)表示返回位置x處元素后面的那個元素;PRIOR(x)表示返回位置x處元素前面的那個元素。

(8)TRIM方法。

TRIM方法用于刪除集合末端的元素,其具體形式如下。

① TRIM:不帶參數的TRIM方法從集合末端刪除一個元素。

② TRIM(x):從集合的末端刪除x個元素,其中x要小于集合的COUNT值。

主站蜘蛛池模板: 横山县| 翁源县| 肃南| 龙江县| 务川| 石屏县| 石家庄市| 九龙城区| 马边| 塘沽区| 沅江市| 正蓝旗| 德钦县| 松滋市| 鹰潭市| 梁平县| 旅游| 武义县| 怀来县| 成武县| 平山县| 太和县| 朝阳市| 高碑店市| 泾川县| 永平县| 凤冈县| 丽水市| 贵阳市| 富裕县| 鞍山市| 夏津县| 东至县| 杨浦区| 开阳县| 宾阳县| 聂荣县| 象州县| 台中县| 揭西县| 南靖县|