zoukankan      html  css  js  c++  java
  • oracle开发学习篇之集合运算符以及集合异常捕获

    --取出集合;长度
    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;
    /
  • 相关阅读:
    Linux top详解
    Could not load file or assembly 'Microsoft.Extensions.Hosting.Abstractions, Version=3.1.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60'.
    面试官最爱的 volatile 关键字,这些问题你都搞懂了没?
    HashMap面试题及答案(2020版)
    Linux 下安装Rider 和 Net core SDK
    [Dnc.Api.Throttle] 适用于. Net Core WebApi 接口限流框架
    开启谷歌浏览器多线程下载
    Ubuntu 20.04 安装 向日葵远程
    java
    docker镜像处理命令格式化工具 docker-command-format.html
  • 原文地址:https://www.cnblogs.com/xiaocen/p/4303141.html
Copyright © 2011-2022 走看看