2016-02-10 53 views
-1

下面的代码不适用于PLSQL上的游标。 我收到一条错误消息。不适用于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; 

回答

2

已使用的counter代替for loop iteratori

尝试;

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; 
+0

感谢普利文。 – Nigel

+0

当表中没有数据时。运行期间出现错误。 什么是例外? – Nigel

+0

什么是错误消息? – Praveen

相关问题