问题描述
- 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)查看
*/
时间: 2024-09-14 13:17:01