-- Start
嵌套表(Nested Tables) 其实就是一个没有最大容量的数组。
DECLARE
-- 定义一个嵌套表类型 MY_ROW,元素类型是 VARCHAR2
TYPE MY_ROW IS TABLE OF VARCHAR2(15);
-- 定义一个类型为 MY_ROW 的嵌套表变量 test1, 此时 test1 是 NULL
test1 MY_ROW;
-- 定义一个类型为 MY_ROW 的嵌套表变量 test2, 此时 test2 是一个空数组
test2 MY_ROW := MY_ROW();
-- 定义一个类型为 MY_ROW 的嵌套表变量 test3, 此时 test3 是一个有5个元素的数组
test3 MY_ROW := MY_ROW('Column 1', 'Column 2', 'Column 3', 'Column 4', 'Column 5');
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('数组元素的数量: ' || CARDINALITY(test3));
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.EXISTS(3) THEN
DBMS_OUTPUT.PUT_LINE('存在第 3 个元素');
END IF;
-- 迭代数组,可变数组从 1 开始
FOR i IN test3.FIRST()..test3.LAST() LOOP
DB