2016-02-10 2 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:

Try;

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

Спасибо Praveen. – Nigel

+0

Если в таблице нет данных. Я получаю сообщение об ошибке во время выполнения. что было бы исключением? – Nigel

+0

Что такое ошибка msg ??? Отчет об ошибке – Praveen

Смежные вопросы