火森

          歡迎到火星來
          posts - 6, comments - 5, trackbacks - 0, articles - 0

          DB2存儲過程小經驗

          Posted on 2007-04-12 10:13 火星 閱讀(553) 評論(0)  編輯  收藏 所屬分類: DB2

          1、insert into "test"
             (
              select char(f_index) from T_QA_RPT_FACE_MONTH where F_RPT_ID=0
             );
          如果“select char(f_index) from T_QA_RPT_FACE_MONTH where F_RPT_ID=0“
          返回結果數為0,那么test表中不會插入記錄。

          2、存儲過程里用for語句比while loop好用些:(類似VB語法)
          SET SCHEMA MES     ;

          SET CURRENT PATH = "SYSIBM","SYSFUN","SYSPROC","MES";

          CREATE PROCEDURE "MES"."P_QA_TEST" ( )
           
          DECLARE iCount INT DEFAULT 0; 

          SET iCount = 0;
          FOR dayrpt AS SELECT * FROM T_QA_RPT_FACE_DAY WHERE F_RPT_ID > 0 DO
            ADD_BONUS:
            for monrpt as SELECT * FROM T_QA_RPT_FACE_MONTH WHERE F_RPT_ID > 0 DO
               if (monrpt.F_INDEX =  dayrpt.F_INDEX) AND (monrpt.F_TYPE =  dayrpt.F_TYPE) THEN
               SET iCount=iCount+1;
             insert into "test" values(char(iCount));
             LEAVE ADD_BONUS;
             END IF;
            end for ADD_BONUS;
            
          END FOR;
              return iCount;
          END;

          3、上例中:
          FOR dayrpt AS SELECT * FROM T_QA_RPT_FACE_DAY WHERE F_RPT_ID > 0 DO
          dayrpt 就是后面那個select語句的結果集,即for語句只需讀一次表,而不會像游標那樣鎖定表然后進行逐記錄select


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 龙岩市| 阳泉市| 彝良县| 金门县| 安溪县| 房山区| 南京市| 延长县| 温泉县| 盘锦市| 林甸县| 安图县| 扎鲁特旗| 铜山县| 阜宁县| 乐东| 安塞县| 会同县| 北安市| 崇礼县| 保山市| 资中县| 罗田县| 通州区| 中山市| 视频| 周至县| 南丰县| 吐鲁番市| 龙岩市| 桂东县| 吉木萨尔县| 庆城县| 河北区| 德兴市| 洪湖市| 沅江市| 康定县| 四会市| 岳阳市| 景德镇市|