oracle 集合类型,取得前一个元素和后一个元素。这两个函数的输出真不理解

 DECLARE
type jihe  is table of number
 not null
 index by varchar2(20);
 a jihe ;
begin
a('x'):= 1111;
a('y'):= 2222;
a('z'):= 3333;
a('b'):= 4444;

dbms_output.put_line('================');
dbms_output.put_line(a('b'));
dbms_output.put_line(a.prior(2));
dbms_output.put_line(a.next(0));
dbms_output.put_line(a.next(1));
dbms_output.put_line(a.next(2));
dbms_output.put_line(a.next(3));
dbms_output.put_line(a.next(4));
dbms_output.put_line(a.next(10));
end;
 /*
刚百度查看学习了下
   NEXT(x) 返回在元素x之后及紧挨着它的元素的值,如果该元素是最后一个元素,则返回null。
  PRIOR(x) 返回集合中在元素x之前紧挨着它的元素的值,如果该元素是第一个元素,则返回null。
应为你定义的索引不是数组(而是varchar2(20)),所有只能a('x') ,a.prior('x'),a.next('x')
*/
 DECLARE
type jihe  is table of number  --定义存的值为数组 
 not null
 index by varchar2(20);   --定义索引为字符串
 a jihe ;
begin
a('x'):= 1111;   
a('y'):= 2222;   
a('z'):= 3333;   
a('b'):= 4444;   
dbms_output.put_line(a.count);
 for i in 1..a.count loop
   /*dbms_output.put_line(a(i));*/  --这边索引就不能按数组来,必须按字母类型
   dbms_output.put_line(a.count);
 end loop;


dbms_output.put_line(' ');
dbms_output.put_line('a.prior('||'''x'''||')='||a.prior('x'));  --这边测试看 貌似是按字母的asci排序的
dbms_output.put_line('a.next('||'''x'''||')='||a.next('x'));
end;

/*可以写成 index by binary_integer 用 a.prior(1),a.next(2)查看


*/