关于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);---删除嵌套表中的指定记录.
展开
 我来答
psychic0111
2011-03-14 · TA获得超过999个赞
知道小有建树答主
回答量:463
采纳率:100%
帮助的人:217万
展开全部
你删除了嵌套表中的第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;
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式