FIRST和LAST方法

FIRST和LAST会返回集合中第一个和最后一个元素在集合中的下标索引值。而对于使用字符串类型作为键的索引表来说,会分别返回最低和最高的键值;键值的高低顺序是基于字符串中字符的二进制值。

空集合的FIRST和LAST方法总是返回NULL。只有一个元素的集合,FIRST和LAST会返回相同的索引值。

IF courses.FIRST = courses.LAST THEN ... -- only one element

下面的例子演示了使用FIRST和LAST函数指定循环范围的下界和上界值:

FOR i IN courses.FIRST .. courses.LAST LOOP ...

实际上,我们可以在允许使用整数表达式的地方使用FIRST或LAST函数。

示例:FIRST和LAST方法

--清理环境
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
        index by binary_integer;
    typ table_typ;
begin
    typ(-1):='tt';
    typ(3):='cc';
    typ(4):='gg';
    dbms_output.put_line( '第一个元素:' || typ.first);
    dbms_output.put_line( '最后一个元素:' || typ.last);
end; 

/
EXEC proc;
第一个元素:-1
最后一个元素:4

--删除
DROP PROCEDURE proc;
DROP TABLE tab CASCADE;

注解

1. 对于变长数组来说,FIRST恒等于1,LAST恒等于COUNT;但对于嵌套表来说,FIRST正常返回1, 如果我们把集合的第一个元素删除,那么FIRST的值就要大于1;同样,如果从嵌套表的中间删除一个元素,LAST就会比COUNT大。

  1. 在遍历集合元素时,FIRST和LAST都会忽略被删除的元素。