2、集合方法(内置)

1)、count函数:计算一个关联数组、嵌套表和VARRAY中定义的元素的数量,count函数不会计算已经被DELETE或TRIM操作移除的元素。

  注意:count的函数用于未初始化的嵌套表和VARRAY类型时,会报异常,因为未初始化的嵌套表和VARRAY不能使用。

  如: var_name.count;

2)、DELETE方法:

  从一个关联数组、嵌套表和VARRAY中删除一个、一批或全部元素的函数。对于VARRAY类型只能删除全部的。

  如:Delete(i)删除嵌套表或关联数组的中的第i元素。

    Delete不带参数,代表删除全部的元素。

    Delete(i,j)删除以i开始以j结束的闭区间内的所有元素。如果i或j超过上边界或下边界,不会抛出异常,就取有的元素。

  删除函数,当删除所有的时候,PL/SQL会立即释放所有内存,否则,删除的元素必须足够一个内存页面时才会释放内存。

3)、Exists方法:

  判断关联数组、嵌套表、VARRAY集合是否包含指定的行。返回False或者True,永远不会返回Null。这个函数也永远不会抛出异常(未初始化的嵌套表和VARRAY也不会抛出异常)

  如:my_listExists(element);

 4)、Extend函数:

   嵌套表和VARRAY集合上的一个方法,就是申请空间的类似说法,就在在内存申请一个“片”,有了这个片才可以进行对这个片进行赋值操作。

  不带参数的Extend,会给集合追加一个空元素,Extend(n)代表追加n个空元素,Extend(n,i)追加n个元素,并把第i元素的值赋给每个新追加的元素上。

  边界上的问题,如果已经用DELETE或TRIM从集合尾端删除了元素,Extend会跳过删除的元素而且重新分配一个新索引。

  如果嵌套表和VARRAY未初始化,Extend函数会抛异常的。

5)、First和Last函数:

   First和Last函数,返回的集合定义的最低和最高的索引值,对于使用字符串作为所引导的关联数组,这些方法会返回字符串,而最低和最高时由会话使用的字符集排序方法确定的,其他类型的集合返回的都是整数。

  边界问题:对于一个已经初始化的集合,里面没有元素,First和Last返回的结果都是Null,不过VARRAY初始化以后,里面最少有一个元素,所以First返回的结果就是1,而last的返回结果也总是等于Count函数的。

  未初始化的VARRAY和嵌套表使用first和last函数会抛异常。

6)、limit函数:

  确定VARRAY定义的元素的最大数量,如果用于已经初始化的嵌套表或关联数组,返回的是null。

  未初始化的嵌套表或VARRAY类似使用此函数,会抛异常。

7)、Prior和Next函数:

   prior返回对于i前的一个可用索引值,next是i后一个可用索引值,这个方法用于遍历集合用的。

  注意,如果prior前一个,next后一个没有值了,返回的是Null,未初始化的嵌套表和VARRAY使用prior和next函数会抛异常的。

8)、Trim方法:

  从嵌套表或VARRAY从尾端删除n个元素,不带参数就删除一个元素,关联数组不能使用这个函数,会编译出错。  

  注意:如果同时使用Trim和Delete方法,删除的数量有可能不是预期所想要的,比如:如果Delete一个集合的最后一个元素,再Trim一个元素,其实这个集合只删除了一个元素,后面的Trim操作,只是删除了Delete后留下的占位符,比较混乱,所以建议不要同时使用Delete函数和Trim函数。

 

 

  

posted on 2013-07-05 15:59  Kelly_HanShuai  阅读(132)  评论(0)    收藏  举报