как добавить все эти значения курсора в переменную вложенной таблицы и распечатать их?
Используя LOOP
, вы можете присваивать значения одно за другим, как показано ниже: Использование Nested
Таблица
DECLARE
TYPE my_nested_table IS TABLE OF employee%rowtype;
cursor cur is
select *
from employee;
var_nt my_nested_table := my_nested_table ();
BEGIN
for i in cur
loop
var_nt.extend;
var_nt(var_nt.count) := i; -- Assignment
--Printing. You can add the columns you want
dbms_output.put_line(i.empno ||'-'|| i.ename||'-'||i.sal||'-'|| i.deptno);
end loop;
END;
/
Использование Associative
Array: - Что может спасти вас от инициализации и расширения
DECLARE
TYPE my_nested_table IS TABLE OF employee%rowtype index by pls_integer;
cursor cur is
select *
from employee;
var_nt my_nested_table; -- No need to initialize
BEGIN
for i in cur loop
--var_nt.extend; -- No need to extend
var_nt(var_nt.count) := i;
dbms_output.put_line(i.empno ||'-'|| i.ename||'-'||i.sal||'-'|| i.deptno);
end loop;
END;
/
Во-вторых, вы можете избежать loop
и получить значения непосредственно в Nested
таблица как показано ниже:
DECLARE
TYPE my_nested_table IS TABLE OF employee%rowtype;
var_nt my_nested_table := my_nested_table ();
BEGIN
select *
BULK COLLECT INTO var_nt
from employee;
for i in 1..var_nt.count Loop
dbms_output.put_line('Employee No. - '||var_nt(i).empno||' '||'Employee Name - '||var_nt(i).ename);
end loop;
END;
/