ITPub博客

首页 > 数据库 > Oracle > PLSQL Language Referenc-PL/SQL集合和记录-集合方法-DELETE方法

PLSQL Language Referenc-PL/SQL集合和记录-集合方法-DELETE方法

原创 Oracle 作者:LuiseDalian 时间:2014-03-13 14:29:39 0 删除 编辑

集合方法

集合方法是一个PL/SQL子程序(或者是一个返回信息的函数,或者是操作集合的过程)。集合方法使得集合更容易被使用,应用程序更容易维护。

注意:对于NULL集合,EXISTS是唯一一个不会引发COLLECTION_IS_NULL异常的方法。

集合方法

DELETE

过程

从集合中删除元素

TRIM

过程

从可变数组或嵌套表删除元素

EXTEND

过程

在可变数组或嵌套表尾部添加元素

EXISTS

 

当且仅当可变数组或嵌套表存在时返回true

FIRST

 

返回集合中第1个索引

LAST

 

返回集合中最后一个索引

COUNT

 

返回集合中元素个数

LIMIT

 

返回集合的上限

PRIOR

 

返回指定索引的前一个索引

NEXT

 

返回指定索引的后一个索引

调用集合方法

collection_name.method

集合方法的调用可以出现在该种类型的PL/SQL子程序可以出现的任何地方,除了SQL中。

在子程序中,集合参数假定参数的属性与它绑定在一起。所以可以对这种参数使用集合方法。

DELETE方法

有下面的形式:

n  删除任何集合对象中的所有元素。该操作立即释放分配给被删除元素的空间。

n  从关联数组和嵌套表

u  DELETE(n),如果存在,则删除索引为n的元素,否则什么都不做。

u  DELETE(m, n),如果m, n存在且m <=n,则删除索引在m..n范围内的所有元素,否则什么都不做。

2种删除,PL/SQL为删除的元素保留占位符。因此删除的元素包含在集合的内部大小中,可以通过赋予一个有效值来恢复删除的元素。

DECLARE

nt nt_type := nt_type(11, 22, 33, 44, 55, 66); --嵌套表

BEGIN

    dbms_output.put_line('初始元素');

    print_nt(nt);

    nt.DELETE(2);  

    dbms_output.put_line('删除第2个元素后');

    print_nt(nt);

    nt(2) := 2222;

    dbms_output.put_line('恢复第2个元素后');

    print_nt(nt);

    nt.DELETE(2, 4); 

    dbms_output.put_line('删除第2-4元素后');

    print_nt(nt);

    nt(3) := 3333;  

    dbms_output.put_line('恢复第3个元素后');

    print_nt(nt);

    nt.DELETE;       

    dbms_output.put_line('删除所有元素后');

    print_nt(nt);

END;


 

DECLARE

    --关联数组

TYPE aa_type_str IS TABLE OF INTEGER INDEX BY VARCHAR2(10);

    aa_str  aa_type_str;

 

    PROCEDURE print_aa_str IS

        i  VARCHAR2(10);

    BEGIN

        i := aa_str.FIRST;

 

        IF i IS NULL THEN

            DBMS_OUTPUT.PUT_LINE('aa_str为空');

        ELSE

            WHILE i IS NOT NULL LOOP

                DBMS_OUTPUT.PUT('aa_str.(' || i || ') = '); print(aa_str(i));

                i := aa_str.NEXT(i);

            END LOOP;

        END IF;

 

        DBMS_OUTPUT.PUT_LINE('---');

    END print_aa_str;

 

BEGIN

    aa_str('A') := 11;

    aa_str('B') := 22;

    aa_str('C') := 33;

    dbms_output.put_line('初始状态');

    print_aa_str;

 

    aa_str.DELETE;

    dbms_output.put_line('删除所有元素之后');

    print_aa_str;

   

    aa_str('A') := 11;   -- 使用相同的值替换删除的元素

    aa_str('B') := 44;   -- 使用不同的值替换删除的元素

    aa_str('C') := 55;   -- 使用不同的值替换删除的元素

    aa_str('D') := 66;   -- 添加新元素

    aa_str('E') := 77;   -- 添加新元素

    aa_str('F') := 88;   -- 添加新元素

    aa_str('G') := 99;   -- 添加新元素

    aa_str('H') := 100;  -- 添加新元素

    aa_str('I') := 101;  -- 添加新元素

    dbms_output.put_line('修改和添加元素之后');

    print_aa_str;

 

    aa_str.DELETE('C');     

    dbms_output.put_line('删除C元素之后');

    print_aa_str;

 

    aa_str.DELETE('F','I'); 

    dbms_output.put_line('

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/17013648/viewspace-1116012/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2012-02-06

  • 博文量
    1986
  • 访问量
    5676919