PRIOR和NEXT方法¶
PRIOR(N)会返回集合中索引为N的元素的前驱索引值;NEXT(N)会返回集合中索引为N的元素的后继索引值。如果N没有前驱或后继,PRIOR(N)或NEXT(N)就会返回NULL。
对于使用字符串作为键的索引表来说,它们会分别返回最低和最高的键值;键值的高低顺序是基于字符串中字符的二进制值。
这种遍历方法比通过固定的下标索引更加可靠,因为在循环过程中,有些元素可能被插入或删除。特别是索引表,因为它的下标索引可能是不连续的,有可能是(1,2,4,8,16)或('A','E','I','O','U')这样的形式。
我们可以使用PRIOR或NEXT来遍历集合。在下面的例子中,我们使用NEXT来遍历一个包含被删除元素的嵌套表
示例:PRIOR和NEXT方法¶
--清理环境
DROP PROCEDURE proc;
DROP TABLE tab CASCADE;
create table tab(a varchar(2));
insert into tab values('a');
CREATE OR REPLACE PROCEDURE proc AS
declare
type table_typ is table of tab.a%type
index by binary_integer;
typ table_typ;
begin
typ(-1):='tt';
typ(3):='cc';
typ(4):='gg';
dbms_output.put_line( '元素3的前一个元素:' || typ.prior(3));
dbms_output.put_line( '元素3的下一个元素:' || typ.next(3));
end;
/
EXEC proc;
元素3的前一个元素:-1
元素3的下一个元素:4
--删除
DROP PROCEDURE proc;
DROP TABLE tab CASCADE;
注解
在遍历元素时,PRIOR和NEXT都会忽略被删除的元素。