火森

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


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


          網站導航:
           
          主站蜘蛛池模板: 宝山区| 海原县| 景宁| 连云港市| 海兴县| 石屏县| 土默特左旗| 佛冈县| 千阳县| 七台河市| 洪湖市| 米易县| 桂平市| 麻栗坡县| 美姑县| 双桥区| 万载县| 鸡东县| 五寨县| 中宁县| 宜章县| 阿拉善盟| 鹤岗市| 仁布县| 余干县| 化隆| 都昌县| 静海县| 台山市| 定西市| 和龙市| 安龙县| 鞍山市| 黄石市| 个旧市| 深水埗区| 鸡东县| 铜鼓县| 封丘县| 琼海市| 宜兰市|