PL/SQL 集合 -- 可变数组
-- Start
可变数组是容量可以变化的数组,但不能超过最大容量。和其他语言不同,可变数组的索引从 1 开始。另外我们不能比较两个可变数组,但是可以检查可变数组是否为 NULL。
DECLARE
-- 定义一个可变数组类型 MY_ARRAY,它的最大容量是100,元素类型是 VARCHAR2
TYPE MY_ARRAY IS VARRAY(100) OF VARCHAR2(15);
-- 定义一个类型为 MY_ARRAY 的可变数组变量 TEST1, 此时 TEST1 是 NULL
test1 MY_ARRAY;
-- 定义一个类型为 MY_ARRAY 的可变数组变量 TEST2, 此时 TEST2 是一个空数组
test2 MY_ARRAY := MY_ARRAY();
-- 定义一个类型为 MY_ARRAY 的可变数组变量 TEST3, 此时 TEST3 是一个有4个元素的数组
test3 MY_ARRAY := MY_ARRAY("element 1", "element 2", "element 3", "element 4");
BEGIN
test3.EXTEND(); -- 添加 1 个 NULL 元素到末尾
test3.EXTEND(3); -- 添加 3 个 NULL 元素到末尾
test3.EXTEND(3, 1); -- 复制元素1的值, 添加 3 个到末尾
DBMS_OUTPUT.PUT_LINE("数组开始元素的索引: " || test3.FIRST());
DBMS_OUTPUT.PUT_LINE("数组末尾元素的索引: " || test3.LAST());
DBMS_OUTPUT.PUT_LINE("数组元素的数量: " || test3.COUNT());
DBMS_OUTPUT.PUT_LINE("数组的容量: " || test3.LIMIT());
DBMS_OUTPUT.PUT_LINE("元素 3 的上一个元素是: " || test3(test3.PRIOR(3)));
DBMS_OUTPUT.PUT_LINE("元素 3 的下一个元素是: " || test3(test3.NEXT(3)));
IF test3 IS NOT NULL THEN
DBMS_OUTPUT.PUT_LINE("test3 不是 NULL");
END IF;
IF test3.EXISTS(3) THEN
DBMS_OUTPUT.PUT_LINE("存在第 3 个元素");
END IF;
-- 迭代数组,可变数组从 1 开始
FOR i IN test3.FIRST()..test3.LAST() LOOP
DBMS_OUTPUT.PUT_LINE(i || "-" || test3(i));
END LOOP;
test3.TRIM(); -- 删除末尾的 1 个元素
test3.TRIM(3); -- 删除末尾的 3 个元素
test3.DELETE(); -- 删除所有元素
END;
/
--更多参见:Oracle PL/SQL 精萃
-- 声明:转载请注明出处
-- Last Edited on 2015-01-08
-- Created by ShangBo on 2015-01-03
-- End
声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。
- 上一篇: Oracle 统计行数
- 下一篇: PL/SQL 集合 -- 多维数组
