欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

oracle 集合

程序员文章站 2023-12-06 08:07:52
exists 该函数返回 集合中第一个元素的索引,如果集合为空,返回nullnullnull collection.exists...

exists

该函数返回

集合中第一个元素的索引,如果集合为空,返回nullnullnull

collection.exists(index)

count

该函数集合

元素的数目

collection.count

delete

该过程从嵌套表中删除一个或多个或合部元素

table_name.delete 删除所有元素

table_name.delete(index)删除指定索引的记录

table_name.delete(start_index,end_index)删除区间内元素

first

返回集合第一个元素索引,如果集合为空,返回null

collection.first

last

返回集合中最后一个元素索引,如果集合为空,返回null

collection. last

next

返回集合当前元素的下一个元素的索引,如果它不存在就返回null

collection. next

prior

返回集合当前元素的上一个元素的索引,如果它不存在就返回null

collection. prior

limit

返回varray中创建元素的最大个数

collection. limit

extends

该过程在集合的末尾添加新的元素

collection.extend添加一个null元素;collection.extends(n)添加n个null元素,collection.extend(n,index)添加由index指定位置上元素的n个副表

trim

从集合末尾处删除元素

collection.trim 删除最后一个元素

collection.trim(n)删除最后n个元素

数据加中的集合
与index-by表不同,varray和嵌套表可以作为对象-关系表中的珍存储在数据库中。它们也可以作为对象关系表中的列使用。为了表示出作为数据库列的数据类型,集合类型必须是在pl/sql和 sql中可见。这需要使用create or replace type 语句定义而不能仅在pl/sql块中进行局部定义。语法如下:
create of replace type table_name is table of data_type

------from to me

i.表类型

--索引组织表,存放在内存中的表.
  declare
    type t_indextable is table of emp%rowtype not null index by binary_integer;
    v_indextable t_indextable;
    cursor v_cur is
      select * from emp;
  begin
    for c in v_cur loop
      v_indextable(c.empno):=c;
      if v_indextable.exists(c.empno) then
        dbms_output.put_line('v_indextable('||c.empno||').empno=' || c.empno
                         ||';v_indextable('||c.empno||').ename='||c.ename);
      else
        dbms_output.put_line('v_indextable('||c.empno||'):不存在');
      end if;
    end loop;
  end;

注:index by binary_integer表示索引表,否则为嵌套表.表类型的下标不一定是连续的,所以可以删除某个下标值,数组类型不行.