火森

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

          DB2存儲過程小經驗

          Posted on 2007-04-12 10:13 火星 閱讀(550) 評論(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


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


          網站導航:
           
          主站蜘蛛池模板: 南木林县| 府谷县| 遂川县| 高平市| 三明市| 东安县| 韶关市| 安塞县| 海兴县| 澄迈县| 呼伦贝尔市| 灌南县| 兴安县| 萍乡市| 兖州市| 沈丘县| 乐业县| 湛江市| 黄梅县| 上蔡县| 大田县| 禹州市| 四子王旗| 财经| 容城县| 三台县| 尉氏县| 天津市| 麦盖提县| 文昌市| 长海县| 双桥区| 嵊泗县| 武穴市| 吉木萨尔县| 德州市| 阿克苏市| 广西| 丰镇市| 汪清县| 湖州市|