码迷,mamicode.com
首页 > 数据库 > 详细

oracle开发学习篇之集合运算符以及集合异常捕获

时间:2015-02-27 14:56:41      阅读:173      评论:0      收藏:0      [点我收藏+]

标签:

--取出集合;长度
declare
        type list_nested is table of varchar2(50) not null;
        v_all list_nested := list_nested(a,b,c,d,c,d);
begin
        dbms_output.put_line(list leng : || cardinality(v_all));
end;
/

--从集合中取出取消重复的元素
declare
        type list_nested is table of varchar2(50) not null;
        v_all list_nested := list_nested(a,b,c,d,c,d);
begin
        dbms_output.put_line(list leng : || cardinality((set(v_all))));
end;
/

--判断集合是否为空
declare 
    type list_nested is table of varchar2(50) not null;
    v_allA list_nested := list_nested(shanghai,beijing,changan);
    v_allB list_nested := list_nested(shanghai);
begin
    if v_allA is not empty then
        dbms_output.put_line(v_allA not null!);
    end if;
    if v_allB is empty then
        dbms_output.put_line(v_allB is null!);
    else
        dbms_output.put_line(v_allB not null!!);
    end if;
end;
/


--判断字符是否存在
declare 
    type list_nested is table of varchar2(50) not null;
    v_allA list_nested := list_nested(shanghai,beijing,changan);
    v_allB list_nested := list_nested(shanghai);
    v_str  varchar2(20) := shanghai;
begin
    if v_str member of v_allA  then
        dbms_output.put_line(shanghai value is exists);
        end if;
end;
/(


--使用for循环遍历集合的每一个元素; 取出list中交集
declare
    type list_nested is table of varchar2(50) not null;
    v_allA list_nested := list_nested(shanghai,beijing,hunan);
    v_allB list_nested := list_nested(Java,beijing,tianjing);
    v_newlist         list_nested ;
BEGIN
    v_newlist := v_allA multiset except v_allB;
    for x in 1 .. v_newlist.count loop
        dbms_output.put_line(v_newlist(x));
    end loop;
end;
/

--使用for循环遍历集合的每一个元素; 取出集合中所有的元素
declare
    type list_nested is table of varchar2(50) not null;
    v_allA list_nested := list_nested(shanghai,beijing,hunan);
    v_allB list_nested := list_nested(Java,beijing,tianjing);
    v_newlist         list_nested ;
BEGIN
    v_newlist := v_allA multiset union v_allB;
    for x in 1 .. v_newlist.count loop
        dbms_output.put_line(v_newlist(x));
    end loop;
end;
/

判断集合是否为集合
declare
    type list_nested is table of varchar2(50) not null;
    v_allA list_nested := list_nested(shanghai,beijing,Java);
begin
    if v_allA is  A set then
        dbms_output.put_line(v_allA is list);
        end if;
end;
/

declare
    type list_nested is table of varchar2(50) not null;
    v_allA  varchar2(20) :=  a;
begin
    if v_allA is  A set then
        dbms_output.put_line(v_allA is list);
        end if;
end;
/



--判断B是否为A的子集合
declare
    type list_nested is table of varchar2(50) not null;
    v_allA list_nested := list_nested(shanghai,beijing,hunan,Java);
    v_allB list_nested := list_nested(Java,beijing);
BEGIN
    if v_allB  submultiset v_allA then
        dbms_output.put_line(v_allB is v_allA submultiset);
    end if;
end;
/
--集合的异常处理;
--理解集合异常的缠身及处理操作; 所有异常捕获都能够使用others进行捕获;

DECLARE
        type list_varray is varray(8) of varchar2(50);
        v_info list_varray; --此时的集合变量没有初始化
BEGIN
        v_info(0) := 10;  --此集合未初始化,所以会存在错误,
exception
        when collection_is_null then
        dbms_output.put_line(The error collection is not initialized);
END;
/




DECLARE
        type list_varray is varray(8) of varchar2(50);
        v_info list_varray := list_varray(shanghai,changan,facebook);    
BEGIN
        dbms_output.put_line(v_info(5));
exception
    when subscript_beyond_count then
        dbms_output.put_line(索引值超过定义的元素个数!!);
    end;
/



DECLARE
        type list_varray is varray(8) of varchar2(50);
        v_info list_varray := list_varray(shanghai,changan,facebook);    
BEGIN
        dbms_output.put_line(v_info(1));
        dbms_output.put_line(v_info(a));    
exception
    when value_error then
        dbms_output.put_line(索引值类型错误);
    end;
/



declare
        type info_index is table of varchar2(100) index by PLS_INTEGER;
        v_info info_index;
begin
        v_info(1) := fireof;
        v_info(2) := firefox.com;
        v_info(3) := www.firefox.com;
        v_info.delete(1);
        dbms_output.put_line(v_info(1));
        dbms_output.put_line(v_info(2));
        dbms_output.put_line(v_info(3));
exception
    when no_data_found then
        dbms_output.put_line(data not found !!!);
end;
/

 

oracle开发学习篇之集合运算符以及集合异常捕获

标签:

原文地址:http://www.cnblogs.com/xiaocen/p/4303141.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!