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 方法。语法如下图所示:

collection_method_call

图1 Collection Method 调用

不能在 SQL 语句调用 collection 方法。

collection 为空时,你只能使用 EXISTS 方法,使用其他方法都会抛出 COLLECTION_IS_NULL 异常。

 

EXISTS 方法

collection 中第 n 个元素存在,则 EXISTS(n) 返回 TRUE;否则,返回 FALSEEXISTS 方法结合 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;
/

示例1:演示检查元素是否存在

COUNT 方法

COUNT 返回 collection 中元素的当前数量。当你不知道 collection 中有多少元素时,很有用。例如,当你把获取的表的一列,放到一个 nested table 时,元素的数量取决于结果集的大小。

对于 varrayCOUNT 总是等于 LAST。通过 EXTENDTRIM 方法,你可以增加或减少 varray 的大小,因此,COUNT 值是变化的,取决于 LIMIT 方法的值。

对于 nested tablesCOUNT 方法通常等于 LAST 方法。然而,若你从 nested table 删除元素,则 COUNT 小于 LAST。当你整理元素时,COUNT 会忽略已删除的元素。使用不带参数的 DELETE 方法会设置 COUNT0

备注:FIRST 方法和 LAST 方法返回最大和最小的索引数。后面说明。

  • 1
  • 2
  • 3
  • 4
  • 5
  • 下一页

相关内容

    暂无相关文章