PLSQL Language Referenc-PL/SQL集合和記錄-關聯陣列

LuiseDalian發表於2014-03-11

關聯陣列

原來稱為PL/SQL索引表,是鍵值對的集合。每個鍵一個唯一索引,用於確定關聯的值。

變數名(索引)

索引是有序排列,而不是按建立的順序。對於字串型別的索引,排序的順序由NLS_SORTNLS_COMP初始化引數決定。

像資料庫表:

n  是空的(但不是NULL),直到你填充它。

n  可以容納不確定數量的元素,可以在不知道位置的情況下訪問它們。

不像資料庫表:

n  不需要磁碟空間和網路操作

n  不能使用DML語句操作


 

-- 使用字串索引的關聯陣列

DECLARE 

    TYPE population IS TABLE OF NUMBER  -- 關聯陣列元素型別

    INDEX BY VARCHAR2(64);                -- 索引是字串

 

    city_population  population;        -- 關聯陣列變數

    i  VARCHAR2(64);                   

 

BEGIN

    --新增元素

    city_population('Smallville')  := 2000;

    city_population('Midland')     := 750000;

    city_population('Megalopolis') := 1000000;

 

    -- 改變值

    city_population('Smallville') := 2001;

 

    -- 輸出關聯陣列

    i := city_population.FIRST;  -- 獲取第1個元素

    WHILE i IS NOT NULL LOOP

        DBMS_Output.PUT_LINE

            (i || ' = ' || city_population(i));

        i := city_population.NEXT(i);  -- 獲取下一下元素

    END LOOP;

END;

 

--1-n的和再乘以一個數,只適用於1-10

DECLARE

    TYPE sum_multiples IS TABLE OF PLS_INTEGER INDEX BY PLS_INTEGER;

    n  PLS_INTEGER := 5;  

    sn PLS_INTEGER := 10; 

    m  PLS_INTEGER := 3;  

    --函式的返回值為一個關聯陣列

    FUNCTION get_sum_multiples (

        multiple IN PLS_INTEGER,

        num      IN PLS_INTEGER

    ) RETURN sum_multiples

    IS

        s sum_multiples;

    BEGIN

        FOR i IN 1..num LOOP

            s(i) := multiple * ((i * (i + 1)) / 2);

        END LOOP;

        RETURN s;

    END get_sum_multiples;

 

BEGIN

    DBMS_OUTPUT.PUT_LINE (

        '1 ' || TO_CHAR(n) || '的和'|| ' 乘以 ' ||

        TO_CHAR(m) || ' = ' || TO_CHAR(get_sum_multiples (m, sn)(n))

    );

END;

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/17013648/viewspace-1107182/,如需轉載,請註明出處,否則將追究法律責任。

相關文章