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

          真正的快樂來源于創造

            BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
            368 Posts :: 1 Stories :: 201 Comments :: 0 Trackbacks

          公告


          常用鏈接

          留言簿(3)

          最新隨筆

          積分與排名

          • 積分 - 394647
          • 排名 - 145

          最新評論

          閱讀排行榜

          任務:將如下輸入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 何楊 閱讀(702) 評論(0)  編輯  收藏 所屬分類: WMB
          主站蜘蛛池模板: 定结县| 治多县| 朔州市| 攀枝花市| 长葛市| 普兰店市| 聂荣县| 榆社县| 肇源县| 读书| 洞头县| 当阳市| 无为县| 景宁| 绥滨县| 萝北县| 赤峰市| 阜新市| 武川县| 廊坊市| 锦州市| 伊吾县| 高雄县| 合阳县| 泗水县| 金溪县| 阳高县| 神木县| 凌源市| 金沙县| 肥西县| 且末县| 固镇县| 东兴市| 和平区| 宝山区| 福清市| 开阳县| 德钦县| 平利县| 青海省|