TRIM方法

使用TRIM方法可以从嵌套表或变长数组的尾端删除N个元素。

TRIM方法有两种形式:

  1. TRIM: 在集合的末端删除一个元素。
  2. 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;

注解

  1. 调用TRIM(N)时,参数N不可以超过当前集合的最大元素个数值。

2. 如果对同一个集合同时使用TRIM和DELETE方法,由于两种方法的处理机制不同,可能会得到某些不符合期望的结果。 因此,建议不要对同一个集合同时使用TRIM和DELETE方法。最好是把嵌套表当作定长的数组结构, 只对它使用DELETE方法;或者将它当作栈,只对它使用TRIM和EXTEND方法。

  1. PL/SQL对TRIM掉的元素不再保留占位符。因此不能简单地为TRIM掉的元素再次进行赋值等操作。