火森

          歡迎到火星來
          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


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


          網站導航:
           
          主站蜘蛛池模板: 永昌县| 信阳市| 越西县| 大理市| 青阳县| 罗定市| 永丰县| 云南省| 扶风县| 白朗县| 新绛县| 新建县| 林州市| 天台县| 绥滨县| 长治县| 万全县| 手游| 潼关县| 钦州市| 鄂伦春自治旗| 无锡市| 黔东| 师宗县| 新密市| 保亭| 南澳县| 阳城县| 崇义县| 班玛县| 大石桥市| 亚东县| 宜城市| 敦煌市| 平山县| 武宁县| 肥西县| 长丰县| 梨树县| 绥滨县| 阿合奇县|