當柳上原的風吹向天際的時候...

          真正的快樂來源于創造

            BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
            368 Posts :: 1 Stories :: 201 Comments :: 0 Trackbacks
          任務:將如下輸入XML變成如下輸出XML
          輸入XML:
          <employees><employee><id>001</id><name>張飛</name><age>28</age></employee><employee><id>002</id><name>關羽</name><age>29</age></employee><employee>    <id>003</id><name>趙云</name><age>30</age></employee></employees>

          輸出XML:
          <summary><count>3</count><names>張飛,關羽,趙云,</names><maxAge>30</maxAge><avgAge>2.9E+1</avgAge></summary>

          我們需要做一個Input節點和一個Output節點以及一個Comput節點,并設置Compute節點的ESQL如下:
          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;
                  
                  
          -- 循環變量        
                  DECLARE I INTEGER 1;
                  
          WHILE I<=Count DO
                      
          -- 字符串拼接
                      SET Names=Names || InputRoot.XML.employees.employee[I].name ;
                      
          SET Names=Names || ',';
                      
                      
          -- 字符串轉換成整數再進行年齡合計
                      SET CurrAge = CAST(InputRoot.XML.employees.employee[I].age AS INTEGER);
                      
          SET SumAge=SumAge+CurrAge;
                      
                      
          -- 得到最大年齡
                      IF MaxAge<CurrAge THEN
                          
          SET MaxAge=CurrAge;
                      
          END IF;
                      
                      
          SET I=I+1;
                  
          END WHILE;
                  
                  
          -- 平均年齡
                  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.aygfsteel.com/Files/heyang/ESqlTest0920_01.rar
          posted on 2011-09-21 10:59 何楊 閱讀(703) 評論(0)  編輯  收藏 所屬分類: WMB
          主站蜘蛛池模板: 海安县| 青河县| 涿州市| 普宁市| 饶平县| 巴彦县| 正阳县| 谢通门县| 宝清县| 通许县| 珠海市| 玉林市| 黄冈市| 宜昌市| 山东省| 常熟市| 霍林郭勒市| 绵阳市| 扶沟县| 分宜县| 交城县| 高阳县| 霍林郭勒市| 正镶白旗| 若羌县| 广东省| 克拉玛依市| 额敏县| 苍山县| 达日县| 芜湖市| 荔波县| 霸州市| 安丘市| 通渭县| 垣曲县| 休宁县| 临朐县| 南靖县| 建阳市| 郑州市|