RT

解决方案 »

  1.   

    定义一维表类型变量
    type 表类型 is table of 类型 index by binary_integer
    index by binary_integer子句代表以符号整数为索引
    例如:
    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;
      

  2.   


    --给你个插入数组一个值,并排序的例子
    DECLARE
      TYPE ABC IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;
      X     ABC;
      M     INT;
      N     INT;
      L_BOL BOOLEAN;
      L_SUM INT := 12; --设定的数组长度
      Z     INT := 55; --要插入数组的数字
      PROCEDURE PRINT(P_1 ABC) IS
      BEGIN
        FOR I IN 1 .. L_SUM LOOP
          DBMS_OUTPUT.PUT_LINE(P_1(I));
        END LOOP;
      END;
    BEGIN
      FOR I IN 1 .. L_SUM LOOP
        X(I) := TRUNC(DBMS_RANDOM.VALUE(1, 100));
      END LOOP;
      l_sum:=l_sum+1;
      x(l_sum):=z;
      PRINT(X);  DBMS_OUTPUT.PUT_LINE('------------');  FOR I IN 1 .. L_SUM LOOP
        N     := 1;
        L_BOL := FALSE;
        WHILE (N + 1) <= L_SUM LOOP
          M := X(N);
          IF M > X(N + 1) THEN
            X(N) := X(N + 1);
            X(N + 1) := M;
            L_BOL := TRUE;
          END IF;
          N := N + 1;
        END LOOP;
        EXIT WHEN NOT L_BOL;
      END LOOP;  PRINT(X);
    END;
    /