DECLARE
  TYPE T_NUM_TAB IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;
  TYPE T_NUM_VAR IS TABLE OF T_NUM_TAB INDEX BY VARCHAR2(10);
  V_VAR_NUM  T_NUM_VAR;
BEGIN
  V_VAR_NUM('A')(1) :=1;
  V_VAR_NUM('B')(1) :=2;
  V_VAR_NUM('A')(5) :=4;
  V_VAR_NUM('B')(5) :=6;
  FOR 'I' IN 'A'..'B' LOOP
    FOR J IN 1..5 LOOP
      DBMS_OUTPUT.PUT_LINE(V_VAR_NUM(I)(J));
    END LOOP;
  END LOOP;
END;赋值好像不合适哎~ FOR 'I' IN 'A'..'B' LOOP
请问该怎样赋值呢?~~

解决方案 »

  1.   


    DECLARE
      TYPE T_NUM_TAB IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;
      TYPE T_NUM_VAR IS TABLE OF T_NUM_TAB INDEX BY VARCHAR2(10);
      V_VAR_NUM T_NUM_VAR;
      J BINARY_INTEGER;
      I VARCHAR2(10);
    BEGIN
      V_VAR_NUM('A')(1) :=1;
      V_VAR_NUM('B')(1) :=2;
      V_VAR_NUM('A')(5) :=4;
      V_VAR_NUM('B')(5) :=6;  I := V_VAR_NUM.first;
      WHILE I is not null LOOP
        J := V_VAR_NUM(I).first;
        WHILE J is not null LOOP
          DBMS_OUTPUT.PUT_LINE(V_VAR_NUM(I)(J));
          J := V_VAR_NUM(I).next(J);
        END LOOP;
        I :=  V_VAR_NUM.next(I);
      END LOOP;
    END;
      

  2.   

    谢谢哦~~如果是INDEX BY BINARY_INTEGER 的话可以用for循环,
    是INDEX BY VARCHAR2的话就不能了吗?~~~
      

  3.   

    for i in lower..upper loop  语句中 i 为 integer 类型;从 lower 开始,每次递增 1 ,一直到 upper。即使 associated table 类型变量的下标是 integer 类型,其中的元素也有可能是稀疏的,因此建议用 first、next 方法遍历 associated table。