TRIM方法¶
使用TRIM方法可以从嵌套表或变长数组的尾端删除N个元素。
TRIM方法有两种形式:
- TRIM: 在集合的末端删除一个元素。
- TRIM (N): 在集合的末端删除N个元素。
例如,下面的表达式从嵌套表courses中删除最后三个元素:
courses.TRIM(3);
同EXTEND相似,TRIM也不会忽略被删除的元素。
示例:TRIM方法¶
--清理环境
DROP PROCEDURE proc;
DROP TABLE tab CASCADE;
create table tab(a varchar(2));
insert into tab values('a');
CREATE OR REPLACE PROCEDURE proc AS
declare
type table_typ is table of tab.a%type;
typ table_typ;
begin
typ := table_typ('a','a','a','a');
typ.trim(2); --裁掉2个元素
dbms_output.put_line( '集合元素总个数:' || typ.count); --总个数2个
end;
/
EXEC proc;
--删除
DROP PROCEDURE proc;
DROP TABLE tab CASCADE;
注解
- 调用TRIM(N)时,参数N不可以超过当前集合的最大元素个数值。
2. 如果对同一个集合同时使用TRIM和DELETE方法,由于两种方法的处理机制不同,可能会得到某些不符合期望的结果。 因此,建议不要对同一个集合同时使用TRIM和DELETE方法。最好是把嵌套表当作定长的数组结构, 只对它使用DELETE方法;或者将它当作栈,只对它使用TRIM和EXTEND方法。
- PL/SQL对TRIM掉的元素不再保留占位符。因此不能简单地为TRIM掉的元素再次进行赋值等操作。