-1

下面的代码不适用于 PLSQL 上的游标。我收到一条错误消息。


 declare 
      type abc is varray(10) of number;
      cursor x is select Empno from emp where rownum <10;
      a abc;
      counter  number :=1;
    begin
      a:=abc();
     for i in x
     loop
      a.extend();
      a(i):=counter.Empno;
      DBMS_output.put_line(a(i));
      counter:=  end loop;
    end;
4

1 回答 1

2

您已使用counter而不是for loop iterator i

尝试;

declare 
    type abc is varray(10) of number;
    cursor x is select Empno from emp where rownum <10;
    a abc;
    counter number := 1;
begin
    a:=abc();
    for i in x loop
        a.extend();
        a(counter) := i.Empno;
        DBMS_output.put_line(a(counter));
        counter := counter + 1;
    end loop;
end;

或者您可以使用Bulk collect将数据插入varray

declare 
    type abc is varray(10) of number;
    a abc := abc();        
begin  
    select Empno BULK COLLECT INTO a from emp where rownum <10;
    for i in 1 .. a.count loop 
        DBMS_output.put_line(a(i)); 
    end loop;
end;
于 2016-02-10T04:18:27.363 回答