zoukankan      html  css  js  c++  java
  • [bbk5141]第14集 Chapter 06 Working with Composite Data Types(Collection)

    DECLARE
            SUBTYPE location_t IS VARCHAR2(64);
            TYPE population_type IS TABLE OF NUMBER INDEX BY location_t;
    
            l_country_population population_type;
            l_count PLS_INTEGER;
            l_location location_t;
    BEGIN
            l_country_population('Greenland') := 100000;
            l_country_population('USA') := 300000000000;
            l_country_population('Icland') := 750000;
            l_country_population('Australia') := 23000000;
            l_country_population('usa') := 40000000;
    
            l_count := l_country_population.COUNT;
            DBMS_OUTPUT.PUT_LINE('COUNT = ' || l_count);
    
            l_location := l_country_population.FIRST;
            DBMS_OUTPUT.PUT_LINE('First Row = ' || l_location);
            DBMS_OUTPUT.PUT_LINE('First Value =' || l_country_population(l_location));
    
            l_location := l_country_population.LAST;
            DBMS_OUTPUT.PUT_LINE('Last Row = ' || l_location);
            DBMS_OUTPUT.PUT_LINE('Last Value =' || l_country_population(l_location));
    
    END;
    /
    DECLARE
            TYPE population_type IS TABLE OF NUMBER INDEX BY VARCHAR2(64);
    
            city_population population_type;
            i VARCHAR2(64);
    BEGIN
            city_population('Smallville') := 2000;
            city_population('Midland') := 750000;
            city_population('Megalopolis') := 1000000000;
    
            city_population('Smallville') := 2001;
    
            i := city_population.FIRST;
            DBMS_OUTPUT.PUT_LINE(i);
    
            WHILE(i IS NOT NULL)
            LOOP
                    DBMS_OUTPUT.PUT_LINE('Key->' || i || ',Value ->' || city_population(i));
                    i := city_population.NEXT(i);
            END LOOP;
    END;
    /

    demo : lookup

    DECLARE
            SUBTYPE name_t IS VARCHAR2(32);
            TYPE lookup_t IS TABLE OF name_t INDEX BY PLS_INTEGER;
    
            name_tab lookup_t;
    
            name name_t := 'Frank';
            l_index PLS_INTEGER;
            l_found BOOLEAN := FALSE;
    BEGIN
            --Populate the lookup table first
            name_tab(0) := 'Wilson';
            name_tab(1) := 'Jim';
            name_tab(2) := 'Richard';
            name_tab(3) := 'Michael';
            name_tab(4) := 'Frank';
            name_tab(5) := 'Chris';
            name_tab(6) := 'Walnut';
            name_tab(7) := 'Patrick';
            name_tab(8) := 'Arcer';
            --Lookup the name in the lookup table
            l_index := name_tab.FIRST;
            WHILE l_index IS NOT NULL
            LOOP
                    IF l_index IS NULL THEN
                            EXIT;
                    END IF;
    
                    IF name = name_tab(l_index) THEN
                            l_found := TRUE;
                            EXIT;
                    END IF;
    
                    l_index := name_tab.NEXT(l_index);
    
            END LOOP;
    
            IF l_found THEN
                    DBMS_OUTPUT.PUT_LINE('I found it :' || l_index || '-->' || name);
            ELSE
                    DBMS_OUTPUT.PUT_LINE('I cannot find it.Sorry!');
            END IF;
    END;
    
    /

    改进版

    DECLARE
            SUBTYPE name_t IS VARCHAR2(32);
            SUBTYPE value_t IS VARCHAR2(32);
    
            TYPE lookup_t IS TABLE OF value_t INDEX BY name_t;
    
            name_tab        lookup_t;
    
            name    name_t := 'Frank';
    
    BEGIN
            --Populate the lookup table first
            name_tab('Wilson')      := 'a_Wilson';
            name_tab('Jim')         := 'b_Jim';
            name_tab('Richard')     := 'c_Richard';
            name_tab('Michael')     := 'd_Michael';
            name_tab('Frank')       := 'e_Frank';
            name_tab('Chris')       := 'f_Chris';
            name_tab('Walnut')      := 'g_Walnut';
            name_tab('Patrick')     := 'h_Patrick';
            name_tab('Arcer')       := 'i_Arcer';
            --Lookup the name in the lookup table
            IF name_tab.EXISTS(name) THEN
                    DBMS_OUTPUT.PUT_LINE('I found it ! =>' || name || '->' || name_tab(name));
            ELSE
                    DBMS_OUTPUT.PUT_LINE('Sorry,I cannot find it!');
            END IF;
    END;
    
    /

    Hash Functions

    Index By Integer or String ?

    Performance about Index by String

  • 相关阅读:
    hadoop2.2.0伪分布式搭建
    HBase详解
    Hbase常用命令
    hbase读取数据原理
    约瑟夫环
    哈希表设计
    哈夫曼树的建立
    TCP的连接和释放
    什么是Kmp算法?
    什么是https
  • 原文地址:https://www.cnblogs.com/arcer/p/3035672.html
Copyright © 2011-2022 走看看