set serveroutput on;
declare 
    type dates is varray(7) of varchar2(10);               --在这里设定一个最大上限
    v_dates dates:=dates('Monday','tuesday','wesdnesday');
    begin
    dbms_output.put_line(v_dates(1));
     dbms_output.put_line(v_dates(2));
      dbms_output.put_line(v_dates(3));
      end;
      /

解决方案 »

  1.   

    set serveroutput on;
    declare 
        type dates is varray(7) of varchar2(10);               --在这里设定一个最大上限
        v_dates dates:=dates('Monday','tuesday','wesdnesday');
        begin
        dbms_output.put_line(v_dates(1));
         dbms_output.put_line(v_dates(2));
          dbms_output.put_line(v_dates(3));
          end;
    ------
    varray(7)我希望7是可变的,或在begin.. end间能改变其大小。
      

  2.   

    我希望
    set serveroutput on;
    declare 
    b int;
    begin
    b:=7;
    declare 
        type dates is varray(b) of varchar2(10);               --b为变量
        v_dates dates:=dates('Monday','tuesday','wesdnesday');
        begin
        dbms_output.put_line(v_dates(1));
         dbms_output.put_line(v_dates(2));
          dbms_output.put_line(v_dates(3));
          end;
    end;
      

  3.   

    我也遇到这样的问题啊:
    declare
      icode number:=0;
      n number:=10;
      type numcode is varray(n) of number(12,0);
    begin  
      select floor(dbms_random.value(1,n)) into icode from dual;
      insert into testcode values(icode);
      commit;
    end;
      就是报错啊, 错误如下:
      type numcode is varray(n) of number(12,0);
                             *
    ERROR 位于第 4 行:
    ORA-06550: 第 4 行, 第 26 列:
    PLS-00103: 出现符号 "N"在需要下列之一时:
    <a number>
    符号 "<a number>在 "N" 继续之前已插入。
    有高手能解决这个问题吗?
      

  4.   

    必须为整形常量For varrays, use the syntax:TYPE type_name IS {VARRAY | VARYING ARRAY} ( size_limit) OF element_type [NOT NULL];The meanings of type_name and element_type are the same as for nested tables.
    size_limit is a positive integer literal representing the maximum number of
    elements in the array. When defining a VARRAY type, you must specify its
    maximum size. In the following example, you define a type that stores up to 366
    dates:DECLARE
    TYPE Calendar IS VARRAY(366) OF DATE;使用table类型。create or replace procedure dd is
      i pls_integer;
      
      type idarr is table of int;
      rec idarr:=idarr();
    begin
      for i in 1..10 loop
        rec.extend;
        rec(i):=i;
        dbms_output.put_line(rec(i));
      end loop;
    end;