只是理论上的问题:我可以告诉PLSQL集合中删除了来自修剪的PLSQL集合的最后一个元素吗?
嵌套表可以变得稀疏由于缺失,可以通过从first
跨越next
S IN索引序列创始孔直到last
证明。 但是,如果last
索引被删除,那么收集范围与删除last
索引时完全相同(或者如果集合从未扩展到该索引)。 有什么办法可以区分这种差异吗?
declare
type ct is table of varchar2(200);
a ct := ct('x','y','z');
b ct := ct('x','y','z');
begin
a.delete(3);
b.trim();
-- first=1, last=2, count=2 here for both a and b
a(3) := 'l'; -- legal since delete keeps room for 3rd element extended
--b(3) := 'l'; -- illegal since trim is inversion of extend
end;
换句话说,如果Alice删除和鲍勃修整,我可以告诉谁做哪个集合(除了使企图指数last+1
插入和捕捉到潜在的ORA-06533错误Subscript beyond count
)?谢谢!
感谢完整的答案。我有点期待它。遗憾的是,这样的信息并不容易获得(例如'limit'不适用于嵌套表格,它可能会返回内部容量)。 –