PRIOR/NEXT

本文介绍了prior/next的相关说明和示例等内容。

priornext都是函数。

给定一个索引,prior返回集合中的前一个现有元素的索引(如果存在),否则,prior返回NULL。因此,对于任何集合cc.prior(c.first)返回NULL。

next返回集合中的后一个现有元素的索引(如果存在),否则,next返回NULL。因此,对于任何集合cc.next(c.last)返回NULL。

给定的索引不必存在,priornext会根据索引类型的排序顺序查找前一个或后一个索引。priornext会忽略被删除的元素,即使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