日期:2014-05-17  浏览次数:20741 次

如何定位到表类型变量中的某一条记录?
比如说我现在定义了一个表类型的变量
type abc is record
( a varchar2(100),
  b varchar2(100),
  c varchar2(100));

type abc_array is table of abc index by binary_integer;

然后给该abc_arry赋值。
n number;
n := 1;

for item in (select * from table1)loop
  abc_array(n).a := item.a;
  n := n+ 1;
end loop;
假设abc_array(3).a = 3,我如何通过找到abc_array中a=3的这条记录,并且知道这条记录是第几条记录?

------解决方案--------------------
SQL code
-- FYI:
DECLARE
        TYPE TABLETYPE1 IS TABLE OF VARCHAR2(9) INDEX BY BINARY_INTEGER;
        TABLE1 TABLETYPE1;
   BEGIN
        TABLE1(1):='成都市';
        TABLE1(2):='北京市';
        TABLE1(3):='青岛市';
        DBMS_OUTPUT.PUT_LINE('总记录数:'||TO_CHAR(TABLE1.COUNT));
        DBMS_OUTPUT.PUT_LINE('第一条记录:'||TABLE1.FIRST);
        DBMS_OUTPUT.PUT_LINE('最后条记录:'||TABLE1.LAST);
        DBMS_OUTPUT.PUT_LINE('第二条的前一条记录:'||TABLE1.PRIOR(2));
        DBMS_OUTPUT.PUT_LINE('第二条的后一条记录:'||TABLE1.NEXT(2));
    END;