ITPub博客

首页 > 数据库 > Oracle > PLSQL Language Referenc-PL/SQL集合和记录-关联数组

PLSQL Language Referenc-PL/SQL集合和记录-关联数组

原创 Oracle 作者: luisedalian 时间:2014-03-11 09:45:31 0 删除 编辑

关联数组

原来称为PL/SQL表或索引表,是键值对的集合。每个键一个唯一索引,用于确定关联的值。

变量名(索引)

索引是有序排列,而不是按创建的顺序。对于字符串类型的索引,排序的顺序由NLS_SORT和NLS_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博客 ” ,链接:https://blog.itpub.net/17013648/viewspace-1107182/ ,如需转载,请注明出处,否则将追究法律责任。

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

注册时间:2012-02-06

  • 博文量
    1986
  • 访问量
    6043845