WMB入门之七:XML遍历 (使用For 循环)

WMB入门之七:XML遍历 (使用For 循环)
其它和前例一样,但遍历代码如下:


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.blogjava.net/Files/heyang/ESqlTest0920_02.rar

你可能感兴趣的:(WMB入门之七:XML遍历 (使用For 循环))