本文介绍了prior
/next
的相关说明和示例等内容。
prior
和next
都是函数。
给定一个索引,prior
返回集合中的前一个现有元素的索引(如果存在),否则,prior
返回NULL。因此,对于任何集合c
,c.prior(c.first)
返回NULL。
next
返回集合中的后一个现有元素的索引(如果存在),否则,next
返回NULL。因此,对于任何集合c
,c.next(c.last)
返回NULL。
给定的索引不必存在,prior
和next
会根据索引类型的排序顺序查找前一个或后一个索引。prior
和next
会忽略被删除的元素,即使delete
保留了占位符。
示例
以下是一个变长数组的prior
/next
基础使用示例。
DECLARE
TYPE v_type IS VARRAY(10) OF VARCHAR(10);
v v_type := v_type();
BEGIN
v.extend(3);
v(1) := 'a';
v(2) := 'b';
v(3) := 'c';
RAISE NOTICE '% % %', v.prior(1), v.prior(2), v.prior(5);
RAISE NOTICE '% % %', v.next(-1), v.next(2), v.next(3);
v.delete(1);
v.delete(3);
RAISE NOTICE '% % %', v.prior(1), v.prior(2), v.prior(5);
RAISE NOTICE '% % %', v.next(-1), v.next(2), v.next(3);
END;
结果显示如下:
NOTICE: <NULL> 1 3
NOTICE: 1 3 <NULL>
NOTICE: <NULL> <NULL> 2
NOTICE: 2 <NULL> <NULL>
DO
以下是一个关联数组的prior
/next
基础使用示例。
DECLARE
TYPE aarray_type IS TABLE OF VARCHAR(10) INDEX BY VARCHAR(10);
arr aarray_type;
BEGIN
arr('b') := 'aa';
arr('c') := 'bb';
arr('d') := 'cc';
RAISE NOTICE '% % %', arr.prior('b'), arr.prior('c'), arr.prior('f');
RAISE NOTICE '% % %', arr.next('a'), arr.next('c'), arr.next('d');
arr.delete('b');
arr.delete('d');
RAISE NOTICE '% % %', arr.prior('b'), arr.prior('c'), arr.prior('f');
RAISE NOTICE '% % %', arr.next('a'), arr.next('c'), arr.next('d');
END;
结果显示如下:
NOTICE: <NULL> b d
NOTICE: b d <NULL>
NOTICE: <NULL> <NULL> c
NOTICE: c <NULL> <NULL>
DO
文档内容是否对您有帮助?