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

          真正的快樂來源于創造

            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 何楊 閱讀(699) 評論(0)  編輯  收藏 所屬分類: WMB
          主站蜘蛛池模板: 诏安县| 镇平县| 邯郸县| 涞水县| 石台县| 克拉玛依市| 宜城市| 罗源县| 永靖县| 土默特右旗| 正阳县| 江安县| 馆陶县| 阿克陶县| 孙吴县| 新丰县| 余庆县| 理塘县| 花垣县| 民权县| 望城县| 将乐县| 台南县| 开阳县| 巢湖市| 游戏| 陇西县| 佛山市| 永清县| 孝昌县| 廊坊市| 贺州市| 迁安市| 阳春市| 古浪县| 平阴县| 崇左市| 保山市| 汉源县| 江孜县| 土默特右旗|