Oracle 11g Release 1 (11.1) PL/SQL Collection 方法
Oracle 11g Release 1 (11.1) PL/SQL Collection 方法
本文内容
- EXISTS 方法
- COUNT 方法
- LIMIT 方法
- FIRST 和 LAST 方法
- PRIOR 和 NEXT 方法
- EXTEND 方法
- TRIM 方法
- DELETE 方法
collection 方法是一个内置的 PL/SQL 子程序,可以返回 collection 信息,或是在 collection 上执行操作,很方便。
你可以通过点记号来调用 collection 方法。语法如下图所示:
图1 Collection Method 调用
不能在 SQL 语句调用 collection 方法。
当 collection 为空时,你只能使用 EXISTS 方法,使用其他方法都会抛出 COLLECTION_IS_NULL 异常。
EXISTS 方法
若 collection 中第 n 个元素存在,则 EXISTS(n) 返回 TRUE;否则,返回 FALSE。EXISTS 方法结合 DELETE 方法,会把 collection 变成稀疏 nested tables(sparse nested tables)。通过 EXISTS 方法,避免引用一个不存在的元素,从而产生异常。当传递一个超出范围的标值时,EXISTS 方法返回 FALSE,而不是产生 SUBSCRIPT_OUTSIDE_LIMIT 异常。
示例1:演示检查元素是否存在
DECLARE
TYPE NumList IS TABLE OF INTEGER;
n NumList := NumList(1,3,5,7);
BEGIN
n.DELETE(2); -- Delete the second element
IF n.EXISTS(1) THEN
DBMS_OUTPUT.PUT_LINE('OK, element #1 exists.');
END IF;
IF n.EXISTS(2) = FALSE THEN
DBMS_OUTPUT.PUT_LINE('OK, element #2 was deleted.');
END IF;
IF n.EXISTS(99) = FALSE THEN
DBMS_OUTPUT.PUT_LINE('OK, element #99 does not exist at all.');
END IF;
END;
/
COUNT 方法
COUNT 返回 collection 中元素的当前数量。当你不知道 collection 中有多少元素时,很有用。例如,当你把获取的表的一列,放到一个 nested table 时,元素的数量取决于结果集的大小。
对于 varray,COUNT 总是等于 LAST。通过 EXTEND 和 TRIM 方法,你可以增加或减少 varray 的大小,因此,COUNT 值是变化的,取决于 LIMIT 方法的值。
对于 nested tables,COUNT 方法通常等于 LAST 方法。然而,若你从 nested table 删除元素,则 COUNT 小于 LAST。当你整理元素时,COUNT 会忽略已删除的元素。使用不带参数的 DELETE 方法会设置 COUNT 为 0。
备注:FIRST 方法和 LAST 方法返回最大和最小的索引数。后面说明。
|
评论暂时关闭