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大。
- 在遍历集合元素时,FIRST和LAST都会忽略被删除的元素。