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
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。
- 上一篇: thinphp 导航栏访问
- 下一篇: PL/SQL 集合 -- 多维数组