4. first() 和 last() 属性
first() 属性返回集合中第一个元素的下标值, last() 属性返回集合中最后一个元素的下标值。下标值可以是数字或字符类型(如 VARCHAR2 或 LONG )。
示例:
定义联合数组类型 sname_tab_type 及其变量 sname_tab ,通过变量 sname_tab 依次获得计算机专业的学生姓名,通过 first() 、 count() 和 last() 属性分别获得第一个元素下标、元素总数和最后一个元素下标。
DECLARE
TYPE sname_tab_type IS TABLE OF students.name%TYPE INDEX BY BINARY_INTEGER;
sname_tab sname_tab_type;
i INT := -10;
BEGIN
FOR student_record IN (SELECT name FROM students WHERE specialty = '计算机') LOOP sname_tab(i) := student_record.name;
i := i + 10;
END LOOP;
DBMS_OUTPUT.PUT_LINE('第一个元素下标为: ' || sname_tab.FIRST);
DBMS_OUTPUT.PUT_LINE('sname_tab 中元素个数: ' || sname_tab.COUNT);
DBMS_OUTPUT.PUT_LINE('最后一个元素下标为: ' || sname_tab.LAST);
END;
输出:
第一个元素下标为: -10
sname_tab 中元素个数: 5
最后一个元素下标为: 30
5. next() 和 prior() 属性
next() 属性返回集合中当前元素的后一个元素的下标值,后一个元素不存在返回 null 。 prior() 属性返回集合中当前元素的前一个元素的下标值,前一个元素不存在返回 null 。下标值可以是数字或字符类型(如 VARCHAR2 或 LONG )。
示例:
定义联合数组类型 sname_tab_type 及其变量 sname_tab ,通过游标使变量 sname_tab 元素依次获得计算机专业学生姓名,最后通过变量 sname_tab 的 first() 和 next() 属性循环显示计算机专业学生姓名。
DECLARE
TYPE sname_tab_type IS TABLE OF students.name%TYPE INDEX BY BINARY_INTEGER;
sname_tab sname_tab_type;
i INT := -10;
counter INT;
BEGIN
FOR student_record IN (SELECT name FROM students WHERE specialty = '计算机') LOOP sname_tab(i) := student_record.name;
i := i + 10;
END LOOP;
counter := sname_tab.FIRST;
WHILE counter <= sname_tab.LAST LOOP
DBMS_OUTPUT.PUT_LINE('sname_tab(' || counter || ') = ' || sname_tab(counter));
counter := sname_tab.NEXT(counter);
END LOOP;
END;
输出:
sname_tab(-10) = 姓名1
sname_tab(0) = 姓名2
sname_tab(10) = 姓名3
sname_tab(20) = 姓名4
sname_tab(30) = 姓名5
通过本文的介绍,你已经了解了南大通用GBase 8s数据库中集合属性的使用方法,包括 count() 、 limit() 、 exist() 、 first() 、 last() 、 next() 和 prior() 。这些属性为操作和管理集合变量提供了强大的支持,使代码更加简洁和高效。希望这些内容能帮助你在实际开发中更好地利用集合类型。如果你在使用过程中遇到任何问题,欢迎随时在社区中提问,我们在这里为你提供支持!