关于oracle plsql 嵌套表
declare---嵌套表cursorall_empsisselect*fromscott.emporderbyempno;typeemp_tableistableofs...
declare
---嵌套表
cursor all_emps is
select * from scott.emp order by empno;
type emp_table is table of scott.emp%rowtype;
emps emp_table;
i pls_integer;
l_count pls_integer;
begin
l_count := 0;
emps := emp_table();
for c1 in all_emps loop
l_count := l_count + 1;
emps.extend;---添加或扩展嵌套表
emps(l_count).empno := c1.empno;
emps(l_count).ename := c1.ename;
emps(l_count).job := c1.job;
emps(l_count).mgr := c1.mgr;
emps(l_count).hiredate := c1.hiredate;
emps(l_count).sal := c1.sal;
emps(l_count).comm := c1.comm;
emps(l_count).deptno := c1.deptno;
end loop;
emps.extend(5, 1);--复制记录到嵌套表
for i in 1 .. emps.count loop
dbms_output.put_line(to_char(emps(i).empno) || ' ' || emps(i).ename);
end loop;
emps.trim(5);
emps.delete(10);---删除嵌套表中的指定记录.
dbms_output.put_line('--------删除后结果');
for i in 1 .. emps.count loop
dbms_output.put_line(to_char(emps(i).empno) || ' ' || emps(i).ename);
end loop;
end;
为什么不能执行
emps.delete(10);---删除嵌套表中的指定记录. 展开
---嵌套表
cursor all_emps is
select * from scott.emp order by empno;
type emp_table is table of scott.emp%rowtype;
emps emp_table;
i pls_integer;
l_count pls_integer;
begin
l_count := 0;
emps := emp_table();
for c1 in all_emps loop
l_count := l_count + 1;
emps.extend;---添加或扩展嵌套表
emps(l_count).empno := c1.empno;
emps(l_count).ename := c1.ename;
emps(l_count).job := c1.job;
emps(l_count).mgr := c1.mgr;
emps(l_count).hiredate := c1.hiredate;
emps(l_count).sal := c1.sal;
emps(l_count).comm := c1.comm;
emps(l_count).deptno := c1.deptno;
end loop;
emps.extend(5, 1);--复制记录到嵌套表
for i in 1 .. emps.count loop
dbms_output.put_line(to_char(emps(i).empno) || ' ' || emps(i).ename);
end loop;
emps.trim(5);
emps.delete(10);---删除嵌套表中的指定记录.
dbms_output.put_line('--------删除后结果');
for i in 1 .. emps.count loop
dbms_output.put_line(to_char(emps(i).empno) || ' ' || emps(i).ename);
end loop;
end;
为什么不能执行
emps.delete(10);---删除嵌套表中的指定记录. 展开
1个回答
展开全部
你删除了嵌套表中的第10个元素所以你的循环的时候,
dbms_output.put_line('--------删除后结果');
for i in 1 .. emps.count loop
dbms_output.put_line(to_char(emps(i).empno) || ' ' || emps(i).ename);
end loop;
这里emps(10)会有异常, 因为你删掉了它,所以会NO DATA FOUND,找不到数据 加个判断就可以了
if i<> 10 then
dbms_output.put_line(to_char(emps(i).empno) || ' ' || emps(i).ename);
end if;
dbms_output.put_line('--------删除后结果');
for i in 1 .. emps.count loop
dbms_output.put_line(to_char(emps(i).empno) || ' ' || emps(i).ename);
end loop;
这里emps(10)会有异常, 因为你删掉了它,所以会NO DATA FOUND,找不到数据 加个判断就可以了
if i<> 10 then
dbms_output.put_line(to_char(emps(i).empno) || ' ' || emps(i).ename);
end if;
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询