DB2 V9.5版本中数据库应用程序移植的改进
2008-09-03 16:28:24 来源:WEB开发网使用输入和输出数组参数从命令行处理器调用过程。
ARRAY 数据类型定义:
create TYPE type-name AS data-type ARRAY [integer-constant]
其中:data-type 不支持LONG VARchar, LONG VARGRAPHIC, LOB, XML类型, integer-constant 最大值2147483647
与ARRAY相关的函数:
ARRAY_AGG 将行数据集聚集成数组
UNNEST 将数组数据转成行数据
CARDINALITY 返回数组中的元素号,类型 BIGINT
MAX_CARDINALITY 返回数组中所含的最大元素号,类型 BIGINT
注意,这些函数只用于SQL procedure
select T.PHONE, T.ID, T.INDEX FROM UNNEST(PHONES, IDS)
WITH ORDINALITY AS T(PHONE, ID, INDEX)
ORDER BY T.INDEX
Example 1
这个例子包含2个存储过程, sum 和 main. 存储过程 main 建立一个含有6个元素(integer)的数组。传递这个数组给存储过程sum, 计算出所有元素值的和并返回给调用存储过程 main. 存储过程 sum 说明了array subindexing 和CARDINALITY 函数的用法.
create type intArray as integer array[100] @
create procedure sum(in numList intArray, out total integer)
begin
declare i, n integer;
set n = CARDINALITY(numList);
set i = 1;
set total = 0;
while (i < n) do
set total = total + numList[i];
set i = i + 1;
end while;
end @
create procedure main(out total integer)
begin
declare numList intArray;
set numList = ARRAY[1,2,3,4,5,6];
call sum(numList, total);
end @
Example 2
更多精彩
赞助商链接