如何将所有这些游标值添加到嵌套表变量中,以及
打印它们?
使用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
数组:-可以避免初始化和扩展
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;
/
,
不确定我是否理解,但是您可以这样做:
DECLARE
CURSOR c_data IS
SELECT *
FROM employee;
tmp_event c_data%rowtype;
BEGIN
OPEN c_data;
LOOP
FETCH c_data INTO tmp_event;
EXIT WHEN c_data%NOTFOUND;
dbms_output.put_line(tmp_event.id);
END LOOP;
CLOSE c_data;
END;
/
这里是DEMO
本文链接:https://www.f2er.com/3157796.html