原来称为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/ ,如需转载,请注明出处,否则将追究法律责任。