其它和前例一樣,但遍歷代碼如下:
CREATE COMPUTE MODULE flow_Compute
CREATE FUNCTION Main() RETURNS BOOLEAN
BEGIN
-- 員工總數
DECLARE Count INTEGER 0;
-- 得到XML中員工總數
SET Count=CARDINALITY(InputRoot.XML.employees.employee[]);
-- 員工姓名匯總
DECLARE Names CHARACTER;
SET Names='';
-- 最大年齡
DECLARE MaxAge INTEGER 0;
-- 年齡合計
DECLARE SumAge INTEGER 0;
-- 當前年齡
DECLARE CurrAge INTEGER 0;
-- 循環變量
FOR CurrItem AS InputRoot.XML.employees.employee[] DO
-- 字符串拼接
SET Names=Names || CurrItem.name ;
SET Names=Names || ',';
-- 字符串轉換成整數再進行年齡合計
SET CurrAge = CAST(CurrItem.age AS INTEGER);
SET SumAge=SumAge+CurrAge;
-- 得到最大年齡
IF MaxAge<CurrAge THEN
SET MaxAge=CurrAge;
END IF;
END FOR;
-- 平均年齡
DECLARE AvgAge FLOAT;
SET AvgAge=SumAge/Count;
-- 拼接輸出XML
SET OutputRoot.XML.summary.count=Count;
SET OutputRoot.XML.summary.names=Names;
SET OutputRoot.XML.summary.maxAge=MaxAge;
SET OutputRoot.XML.summary.avgAge=CAST(AvgAge AS CHARACTER);
RETURN TRUE;
END;
END MODULE;
相比較而言,這種方式更簡潔方便。
下載地址:
http://www.tkk7.com/Files/heyang/ESqlTest0920_02.rar