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函数。
浙公网安备 33010602011771号