DB2 存过编写记录

将表中的数据游标获取,然后更新相应的字段数据

SQLCODE 要定义,用于循环结束判断。

 

CREATE PROCEDURE "HDEVSHEAM"."LOANUPDATEEFFTYPE" ( ) 
  BEGIN

DECLARE V_EFFTYPE VARCHAR(10);
DECLARE V_APPNO VARCHAR(30);
DECLARE V_POLNO VARCHAR(30);
DECLARE SQLCODE INT;
DECLARE C1 CURSOR
  FOR select (SELECT case when l.SOS_FLAG='Y' then '20005' else '20004' end FROM LOAN_APP_FORM L WHERE l.LOAN_NO=i.LOAN_NO),I.APPNO,I.POLNO from  LOAN_APPNO_POLICY_INSURED i with ur;
  
  OPEN C1;
  FETCH_LOOP :LOOP
  FETCH C1 INTO V_EFFTYPE,V_APPNO,V_POLNO;
     IF (SQLCODE<>0) THEN
        LEAVE FETCH_LOOP;
     END IF;
     /*IF (V_APPNO IS NULL) AND (V_POLNO IS NULL) THEN
        LEAVE FETCH_LOOP;
     END IF;*/
     IF(LENGTH(V_APPNO)>1) THEN
          UPDATE app_form a  set eff_type =V_EFFTYPE WHERE A.APPNO=V_APPNO;
      END IF;
     IF(LENGTH(V_POLNO)>1) THEN
          UPDATE POLICY_FORM SET EFF_TYPE = V_EFFTYPE WHERE POLNO =V_POLNO;
     END IF;
     
    END LOOP FETCH_LOOP;
  --- END FOR;
 close C1;
END;

 

 

传参数例子:

CREATE PROCEDURE "HDEVSHEAM"."LOANUPDATEEFFTYPE1"
 (IN "C_APPNO" VARCHAR(30) ) 
    BEGIN

DECLARE V_EFFTYPE VARCHAR(10);
DECLARE V_APPNO VARCHAR(30);
DECLARE V_POLNO VARCHAR(30);
DECLARE SQLCODE INT;
DECLARE C1 CURSOR
		FOR select (SELECT case when l.SOS_FLAG='Y' then '20005' else '20004' end FROM LOAN_APP_FORM L WHERE l.LOAN_NO=i.LOAN_NO),I.APPNO,I.POLNO from  LOAN_APPNO_POLICY_INSURED i	where I.APPNO=C_APPNO;
		
		OPEN C1;
		FETCH_LOOP :LOOP
		FETCH C1 INTO V_EFFTYPE,V_APPNO,V_POLNO;
			  IF (SQLCODE<>0) THEN
			     LEAVE FETCH_LOOP;
			  END IF;
			  /*IF (V_APPNO IS NULL) AND (V_POLNO IS NULL) THEN
			     LEAVE FETCH_LOOP;
			  END IF;*/
			  IF(LENGTH(V_APPNO)>1) THEN
			  			  UPDATE app_form a  set eff_type =V_EFFTYPE WHERE A.APPNO=V_APPNO;
			   END IF;
			  IF(LENGTH(V_POLNO)>1) THEN
			  			  UPDATE POLICY_FORM SET EFF_TYPE = V_EFFTYPE WHERE POLNO =V_POLNO;
			  END IF;
			  
	   END LOOP FETCH_LOOP;
	 --- END FOR;
	close C1;
END;

 

CREATE PROCEDURE "HDEVSHEAM"."GET_DZ_NO"
 (INOUT "ODZNO" VARCHAR(30), 
  IN "ICVCHTYP" VARCHAR(2), 
  IN "ICDPTCDE" VARCHAR(11), 
  IN "ICYEAR" VARCHAR(4), 
  IN "ICPRODNO" VARCHAR(7), 
  IN "INUSR" VARCHAR(30), 
  IN "UPDATEMARK" INTEGER, 
  INOUT "ICFLAG" INTEGER
 ) 
    /*
     产生系统单证号
     ODZNO           输入输出系统单证号
     ICVCHTYP        单证类型
     ICDPTCDE        机构编码
     ICYEAR          日期年
     ICPRODNO        产品编码 
     INUSR           操作员
     UPDATEMARK      是否更新标志    1--更新序号表    0--不更新      主要是财务接口用来判断
     --ICFLAG          成功标志
  */
  BEGIN

    DECLARE MTK_RETURN_COND CONDITION FOR SQLSTATE 'OR001';

    DECLARE EXIT HANDLER FOR MTK_RETURN_COND 
        BEGIN
        END;
    BEGIN

--|       /*****************中华联合业务号规则*****************************************
--|      1.保单号、批单号、赔案号编码:
--|      格式(共19位):XX     XX      XXXXXXXX          XXXX    XXXXXX
--|                      标识   年度    机构(支公司)    险种    流水号
--|
--|      其中”标识”产用智软公司的现有规则,原1位变成2位,前面补零
--|
--|      2.单证号: 2位年 +  2位 省代码 + 2位 中支代码 + 9位流水号(需要改程序,不是存储过程产生)
--|
--|      3.其他未尽的业务号规则,原则上按照智软公司现有规则处理,如果智软方面有疑问的请提出来确认
--|
--|      ******************单证类型icVchTyp参数的说明*********************************
--|      1 ,保单
--|              保单号      =  标识(1)+机构(4)+产品(4)+年份(4)+流水号(6)
--|      3 ,批单
--|              批单号      =  保单号+'-'+XX
--|      4 ,赔案
--|              赔案号      =  标识(1)+机构(4)+产品码(4)+年份(4)+流水号(6)
--|      5 ,投保单
--|              投保单号 = 标识(1)+机构(4)+产品码(4)+年份(4)+流水号(6)
--|      6 ,网销保单
--|              保单号      =  标识(6)+机构(4)+产品(4)+年份(4)+流水号(6)	
--|      7 ,批改申请单
--|              批改申请单  = 保单号+'A'+XX
--|      9 ,报案
--|              报案号      = 标识(1)+机构(4)+产品码(4)+年份(4)+流水号(6)
--|      L3,结案归档号
--|              结案归档号  = 标识'6'(1)+机构(4)+产品码(4)+年份(4)+流水号(6)
--|      01,追偿案件
--|              追偿立案号  = 标识'z'(1)+机构(4)+产品(4)+年份(4)+二级分类'1'(1)+流水号(5)
--|      02,追偿案件
--|              追偿结案号  = 标识'z'(1)+机构(4)+产品(4)+年份(4)+二级分类'2'(1)+流水号(5)
--|      A ,合作协议
--|              合作协议号  =  标识(1)+分公司(2)+年份(4)+流水号(6)
--|      B ,代理协议
--|              代理协议号  =  标识(1)+分公司(2)+年份(4)+流水号(6)
--|      C,预约协议
--|              预约协议号  =  标识(1)+分公司(2)+年份(4)+流水号(6)
--|      M ,赔款
--|              赔款收据号  = 标识(1)+机构(4)+年份(4)+产品大类(2)+流水号(5)
--|      R ,保费收据
--|              保费收据号  = 标识(1)+机构(4)+年份(4)+产品大类(2)+流水号(5)
--|      S ,手续费收据
--|              手续费收据号 = 标识(1)+机构(4)+年份(4)+产品大类(2)+流水号(5)
--|      U ,退保费
--|              退保费收据号 = 标识(1)+机构(4)+年份(4)+产品大类(2)+流水号(5)
--|      N ,无赔退费
--|              无赔退费收据号 = 标识(1)+机构(4)+年份(4)+产品大类(2)+流水号(5)
--|      K ,经纪费
--|              经纪费收据号 = 标识(1)+机构(4)+年份(4)+产品大类(2)+流水号(5)
--|      D ,约定退费
--|              约定退费收据号 = 标识(1)+机构(4)+年份(4)+产品大类(2)+流水号(5)
--|      E ,代理人
--|
--|      F ,经纪人
--|
--|      G ,其它保险公司
--|
--|      *****************************************************************************/

    DECLARE v_serieno BIGINT;  --序列号
    DECLARE iJmpFlag FLOAT;    --跳号标志
    DECLARE v_dptcde0 VARCHAR(11);          --未使用
    DECLARE v_dptcde VARCHAR(11);--机构编码
    DECLARE v_ProdNo VARCHAR(7);--产品编码
    DECLARE v_DptCdeLvl2 VARCHAR(11);      --未使用
    DECLARE v_cYear VARCHAR(4);--年日期
    -- DECLARE v_cFlag INT;--成功标志
    DECLARE v_nRet SMALLINT;               --未使用
    DECLARE nCount FLOAT;--
    DECLARE nTemp FLOAT;                   --未使用
    DECLARE v_sno VARCHAR(20);
    DECLARE v_stemp VARCHAR(30);     --未使用
    DECLARE sztemp VARCHAR(10);
    DECLARE SQLERRM VARCHAR(255);	--	SQL错误标志
    DECLARE v_odzno VARCHAR(30); /*add by yuanf, 批单(申请)号跳号时使用*/
    DECLARE INITED int;   --序列号是否已初始
    DECLARE SERNODEPTNO  VARCHAR(11);  --输入的机构编码对应的产生序列好机构编码

       -- DECLARE EXIT HANDLER FOR SQLEXCEPTION, SQLWARNING --, NOT FOUND
       --     BEGIN
      --          GET DIAGNOSTICS EXCEPTION 1 SQLERRM = MESSAGE_TEXT;
       --         SET odzno = 'aaa';
        --        SET icflag = -1;
       --         RESIGNAL MTK_RETURN_COND;
       --     END;

       --去空格

        SET v_prodno = ltrim(rtrim(icprodno));
        SET v_cyear = ltrim(rtrim(icyear));
        --SET v_cflag = COALESCE(icflag,0);
        SET ijmpflag = 0;
	SET v_odzno = odzno; /*add by yuanf, 2005-0819*/
		
       --参数检测

        --IF LENGTH(v_prodno) <> 7
          -- OR v_prodno IS NULL
          -- OR LENGTH(v_cyear) <> 4
          -- OR v_cyear IS NULL THEN

          --  SET odzno = NULL;

          --  SET icflag = -1;

          --  RETURN 0;

        --END IF;
        if v_cyear is null or v_cyear='' then
           set v_cyear=CHAR(year(current date));
        end if;

        set INITED=0;
        SELECT C_DPT_SERNO INTO SERNODEPTNO FROM T_DEPARTMENT WHERE C_DPT_CDE=ltrim(rtrim(ICDPTCDE));
        SELECT COUNT(*) INTO INITED FROM T_SERIENO WHERE C_VCH_TYP=ltrim(rtrim(ICVCHTYP)) AND C_DPT_CDE=SERNODEPTNO
                    AND C_YEAR=v_cyear AND C_PROD_NO=v_prodno;
        IF INITED=0 THEN
            INSERT INTO T_SERIENO(C_VCH_TYP,C_DPT_CDE,C_YEAR,C_PROD_NO,C_SERIE_NO) VALUES (ltrim(rtrim(ICVCHTYP)),SERNODEPTNO,v_cyear,v_prodno,0);
        END IF;
    /*
       IN ICVCHTYP VARCHAR(2),
       IN ICDPTCDE VARCHAR(11),
       IN ICYEAR VARCHAR(4),
       IN ICPRODNO VARCHAR(7),
       OUT ISSUCC INT)
     */
       -- LOOP_LABEL:
       -- LOOP

           -- SET v_cflag = 1;

          --获取流水号产生机构,流水号及年度。每一个机构都有一个流水号产生机构
         -- if icvchtyp <> '3' and icvchtyp <> '7' then --批单号与流水号无关 Luoxq 2005-06-25

            SELECT ltrim(rtrim(b.c_dpt_serno)),
                   COALESCE(a.c_serie_no, 0) + 1--,
                  -- COALESCE(a.c_year, RTRIM(TO_CHAR(YEAR(CURRENT TIMESTAMP))))
            INTO v_dptcde,
                 v_serieno--,
                -- v_cyear
            FROM t_serieno a,
                 t_department b
            WHERE a.c_vch_typ = icvchtyp
                  AND a.c_prod_no = icprodno
                  AND b.c_dpt_cde = ltrim(rtrim(icdptcde))
                  and a.c_year=v_cyear
                  AND a.c_dpt_cde = b.c_dpt_serno;

           IF UPDATEMARK=1 THEN
            UPDATE t_serieno
                  SET c_serie_no = v_serieno
                  WHERE c_vch_typ = icvchtyp
                        AND c_dpt_cde = v_dptcde
                        AND c_prod_no = v_prodno
                        and c_year=v_cyear;
            END IF;
            set v_dptcde = left(rtrim(v_dptcde)||'00000000', 8);   --填充机构编码
         -- end if;

            --生成单证号
			--投保单号
            IF icvchtyp = '5' THEN
               -- SET odzno = '05' || COALESCE(SUBSTR(v_cyear, 3, 2), '') || COALESCE(v_dptcde, '') || COALESCE(v_prodno, '') || COALESCE(fill_zero(TO_CHAR(v_serieno), 6, 0), '');
                SET odzno ='05'|| COALESCE(v_cyear, '') || COALESCE(v_dptcde, '') || COALESCE(v_prodno, '') || COALESCE(right('000000'||rtrim(CHAR(v_serieno)), 6), '');

             --   SELECT COUNT(*)  INTO ijmpflag
             --   FROM t_ply_base
             --   WHERE c_ply_app_no = odzno;
             --
             --   IF ijmpflag > 0 THEN
             --       INSERT INTO t_seriejmpno (c_crt_cde, t_crt_tm, c_upd_cde, t_upd_tm,
             --                c_dpt_cde, c_prod_no, c_vch_typ, c_chg_rsn,
             --                c_tgt_serie_no,
             --               c_tgt_year) VALUES
             --               (inusr,CURRENT TIMESTAMP ,inusr,CURRENT TIMESTAMP ,v_dptcde,v_prodno,icvchtyp,'1',TO_NUMBER(fill_zero(TO_CHAR(v_serieno), 6, 0)),rtrim(TO_CHAR(year(CURRENT TIMESTAMP))));
             --       SET v_cflag = -1;
             --   END IF;
            --代理保单号
            ElseIf icvchtyp = '2' THEN
                --SET odzno = '02' || COALESCE(SUBSTR(v_cyear, 3, 2), '') || COALESCE(v_dptcde, '') || COALESCE(v_prodno, '') || COALESCE(fill_zero( TO_CHAR(v_serieno), 6, 0), '');

            --保单号
            ELSEIF icvchtyp = '1' THEN
               -- SET odzno = '01' || COALESCE(SUBSTR(v_cyear, 3, 2), '') || COALESCE(v_dptcde, '') || COALESCE(v_prodno, '') || COALESCE(fill_zero(TO_CHAR(v_serieno), 6, 0), '');
                 SET odzno = '01' || COALESCE(v_cyear, '') || COALESCE(v_dptcde, '') || COALESCE(v_prodno, '') || COALESCE(right('000000'||rtrim(CHAR(v_serieno)), 6), '');
				 
			--网销保单号
            ELSEIF icvchtyp = '6' THEN 
                 SET odzno = '06' || COALESCE(v_cyear, '') || COALESCE(v_dptcde, '') || COALESCE(v_prodno, '') || COALESCE(right('000000'||rtrim(CHAR(v_serieno)), 6), '');

            --批改申请单号=保单号+A+序号
            ELSEIF icvchtyp = '7' THEN
                  SET odzno ='07'|| COALESCE(v_cyear, '') || COALESCE(v_dptcde, '') || COALESCE(v_prodno, '') || COALESCE(right('000000'||rtrim(CHAR(v_serieno)), 6), '');
                BEGIN
--                    if ijmpflag = 0  then
--                        SELECT COUNT(*)
--                        INTO ncount
--                        FROM t_edr_base
--                        WHERE c_ply_no = odzno;
--                    elseif ijmpflag > 0 then
--                    /*如果存在就进行跳号,由于其流水号不是根据t_serieno表产生,所以需要做以下处理*/
--                        SET ncount = ncount+1;
--                        if nCount>99 then
--                    /*如果跳了100次还不行,则强行退出*/
--                            SET v_cflag = -2;
--                            LEAVE LOOP_LABEL;
--                        end if;
--                    end if;
--
--                    SET v_sno = fill_zero(TO_CHAR(ncount + 1), 2, 0);
--					
--					          --SET odzno = COALESCE(odzno, '') || 'A' || COALESCE(v_sno, ''); del by yuanf
--					          SET odzno = COALESCE(v_odzno, '') || 'A' || COALESCE(v_sno, '');
--					
--                    SELECT COUNT(*)
--                    INTO ijmpflag
--                    FROM t_edr_base
--                    WHERE c_edr_app_no = odzno;
--					          --有重号
--                    IF ijmpflag > 0 THEN
--
--                        /*INSERT INTO t_seriejmpno (c_crt_cde, t_crt_tm, c_upd_cde, t_upd_tm,
--                                c_dpt_cde, c_prod_no, c_vch_typ, c_chg_rsn,
--                                c_tgt_serie_no,
--                                c_tgt_year) VALUES (inusr,CURRENT TIMESTAMP ,inusr,CURRENT TIMESTAMP ,v_dptcde,v_prodno,icvchtyp,'1',TO_NUMBER(SUBSTR(odzno, 14)),RTRIM(TO_CHAR(YEAR(CURRENT TIMESTAMP))));
--                        */
--                        SET v_cflag = -1;
--
--                    END IF;

                END;
			--批单号=保单号+序号
            ELSEIF icvchtyp = '3' THEN
                 SET odzno ='03'|| COALESCE(v_cyear, '') || COALESCE(v_dptcde, '') || COALESCE(v_prodno, '') || COALESCE(right('000000'||rtrim(CHAR(v_serieno)), 6), '');
                BEGIN
--                    if ijmpflag = 0  then
--                        SELECT COUNT(*)
--                        INTO ncount
--                        FROM t_edr_base
--                        WHERE c_ply_no = odzno;
--                    elseif ijmpflag > 0 then
--                    /*如果存在就进行跳号,由于其流水号不是根据t_serieno表产生,所以需要做以下处理*/
--                        SET ncount = ncount+1;
--                        if nCount>99 then
--                    /*如果跳了100次还不行,则强行退出*/
--                            SET v_cflag = -2;
--                            LEAVE LOOP_LABEL;
--                        end if;
--                    end if;
--
--                    SET v_sno = fill_zero(TO_CHAR(ncount), 2, 0);
--
--                    --SET odzno = COALESCE(odzno, '') || '-' || COALESCE(v_sno, '');
--					          SET odzno = COALESCE(v_odzno, '') || '-' || COALESCE(v_sno, '');
--					
--                    SELECT COUNT(*)
--                    INTO ijmpflag
--                    FROM t_edr_base
--                    WHERE c_edr_no = odzno;
--
--                    IF ijmpflag > 0 THEN
--
--                        /*INSERT INTO t_seriejmpno (c_crt_cde, t_crt_tm, c_upd_cde, t_upd_tm,
--                                c_dpt_cde, c_prod_no, c_vch_typ, c_chg_rsn,
--                                c_tgt_serie_no,
--                                c_tgt_year) VALUES (inusr,CURRENT TIMESTAMP ,inusr,CURRENT TIMESTAMP ,v_dptcde,v_prodno,icvchtyp,'1',TO_NUMBER(SUBSTR(odzno, 14)),RTRIM(TO_CHAR(YEAR(CURRENT TIMESTAMP))));
--                        */
--                        SET v_cflag = -1;
--
--                    END IF;

                END;


            --报案号 = 年份(4)+机构(4)+产品码(7)+流水号(6)
             ELSEIF icvchtyp = '9' THEN

                SET odzno ='09'|| COALESCE(v_cyear, '') || COALESCE(v_dptcde, '') || COALESCE(v_prodno, '') || COALESCE(right('000000'||rtrim(CHAR(v_serieno)), 6), '');
			
            --赔案号 =年份(4)+ 机构(4)+产品码(4)+流水号(6)
            ELSEIF icvchtyp = '4' THEN

                SET odzno ='04'|| COALESCE(v_cyear, '') || COALESCE(v_dptcde, '') || COALESCE(v_prodno, '') || COALESCE(right('000000'||rtrim(CHAR(v_serieno)), 6), '');



            --结案归档号 = 标识(2)+年份(2)+机构(4)+产品码(4)+流水号(6)
            ELSEIF icvchtyp = 'L3' THEN

               -- BEGIN
              --      SET odzno = '06' || COALESCE(SUBSTR(v_cyear, 3, 2), '') || COALESCE(v_dptcde, '') || COALESCE(v_prodno, '') || COALESCE(right('000000'||CHAR(v_serieno), 6), '');

              --  END;

            --追偿号 = 标识(1)+年份(2)+机构(4)+产品码(4)+二级分类'1'(1)+流水号(6)*/
            ELSEIF icvchtyp = '01' THEN

               -- BEGIN

               --     SET odzno = 'Z' || COALESCE(SUBSTR(v_cyear, 3, 2), '') || COALESCE(v_dptcde, '') || COALESCE(v_prodno, '') || '1' || COALESCE(right('000000'||CHAR(v_serieno), 6), '');

              --  END;

            --追偿结案号 = 标识(1)+机构(4)+产品码(4)+年份(4)+二级分类'2'(1)+流水号(6)
            /*ELSEIF icvchtyp = '02' THEN

                BEGIN

                    SET odzno = 'Z' || COALESCE(SUBSTR(v_cyear, 3, 2), '') || COALESCE(v_dptcde, '') || COALESCE(v_prodno, '') || '2' || COALESCE(right('000000'||CHAR(v_serieno), 6), '');

                END;
			*/
            --财务保费收据号 = 标识(1)+年份(2)+机构(4)+产品(4)+流水号(5)*/
            ELSEIF icvchtyp = 'R' THEN

                BEGIN

                    SET sztemp = right('000000'||rtrim(CHAR(v_serieno)),6);

                    SET odzno = 'R' || COALESCE(SUBSTR(v_cyear, 3, 2), '') || COALESCE(v_dptcde, '') || COALESCE(LTRIM(RTRIM(v_prodno)), '') || COALESCE(sztemp, '');

                END;

          /* 财务手续费收据号 = 标识(1)+机构(4)+年份(4)+产品大类(2)+流水号(5) */
            ELSEIF icvchtyp = 'S' THEN

                BEGIN

                    SET sztemp =right('000000'||rtrim(CHAR(v_serieno)),6);

                    SET odzno = 'S' || COALESCE(SUBSTR(v_cyear, 3, 2), '') || COALESCE(v_dptcde, '') || COALESCE(LTRIM(RTRIM(v_prodno)), '') || COALESCE(sztemp, '');

                END;

          /* 财务赔款收据号 = 标识(1)+机构(4)+年份(4)+产品大类(2)+流水号(5) */
            ELSEIF icvchtyp = 'M' THEN

                BEGIN

                    SET sztemp = right('000000'||rtrim(CHAR(v_serieno)),6);

                    SET odzno = 'M' || COALESCE(SUBSTR(v_cyear, 3, 2), '') || COALESCE(v_dptcde, '') || COALESCE(LTRIM(RTRIM(v_prodno)), '') || COALESCE(sztemp, '');

                END;

          /* 财务退保费收据号 = 标识(1)+机构(4)+年份(4)+产品大类(2)+流水号(5) */

            ELSEIF icvchtyp = 'U' THEN

                BEGIN

                    SET sztemp = right('000000'||rtrim(CHAR(v_serieno)),6);

                    SET odzno = 'U' || COALESCE(SUBSTR(v_cyear, 3, 2), '') || COALESCE(v_dptcde, '') || COALESCE(LTRIM(RTRIM(v_prodno)), '') || COALESCE(sztemp, '');

                END;

          /* 财务无赔退费收据号 = 标识(1)+机构(4)+年份(4)+产品大类(2)+流水号(5) */
            ELSEIF icvchtyp = 'N' THEN

                BEGIN

                    SET sztemp = right('000000'||rtrim(CHAR(v_serieno)),6);

                    SET odzno = 'N' || COALESCE(SUBSTR(v_cyear, 3, 2), '') || COALESCE(v_dptcde, '') || COALESCE(LTRIM(RTRIM(v_prodno)), '') || COALESCE(sztemp, '');

                END;

          /* 财务经纪费收据号 = 标识(1)+机构(4)+年份(4)+产品大类(2)+流水号(5) */
            ELSEIF icvchtyp = 'K' THEN

                BEGIN

                    SET sztemp = right('000000'||rtrim(CHAR(v_serieno)),6);

                    SET odzno = 'K' || COALESCE(SUBSTR(v_cyear, 3, 2), '') || COALESCE(v_dptcde, '') || COALESCE(LTRIM(RTRIM(v_prodno)), '') || COALESCE(sztemp, '');

                END;

          /* 约定退费收据号 = 标识(1)+机构(4)+年份(4)+产品大类(2)+流水号(5) */
            ELSEIF icvchtyp = 'D' THEN

                BEGIN

                    SET sztemp = right('000000'||rtrim(CHAR(v_serieno)),6);

                    SET odzno = 'D' || COALESCE(SUBSTR(v_cyear, 3, 2), '') || COALESCE(v_dptcde, '') || COALESCE(LTRIM(RTRIM(v_prodno)), '') || COALESCE(sztemp, '');

                END;
			--合作协议号,代理协议号,预约协议号 放在CreateSerieno中去了
            /*ELSEIF (icvchtyp = 'B' or icvchtyp = 'C' or icvchtyp = 'A' ) THEN
 				
                SET odzno = icvchtyp || COALESCE(getupdptcode( icdptcde, 2 ), '') || COALESCE(v_cyear, '') || COALESCE(fill_zero(TO_CHAR(v_serieno), 5, 0), '');

                SELECT COUNT(*)
                INTO ijmpflag
                FROM t_confer
                WHERE c_agt_agr_no = odzno;

                IF ijmpflag > 0 THEN

                    INSERT INTO t_seriejmpno (c_crt_cde, t_crt_tm, c_upd_cde, t_upd_tm,
                             c_dpt_cde, c_prod_no, c_vch_typ, c_chg_rsn,
                             c_tgt_serie_no,
                             c_tgt_year ) VALUES (inusr,CURRENT TIMESTAMP ,inusr,CURRENT TIMESTAMP ,v_dptcde,v_prodno,icvchtyp,'1',TO_NUMBER(fill_zero(TO_CHAR(v_serieno), 5, 0)),RTRIM(TO_CHAR(YEAR(CURRENT TIMESTAMP))));
					
                    SET v_cflag = '-1';

                END IF;			
            */
            /* 赔案费用收据号 */
            ELSE

                SET sztemp =right('000000'||rtrim(CHAR(v_serieno)),6);

                SET odzno = EMPTY_TO_NULL(COALESCE((COALESCE((COALESCE((COALESCE(icvchtyp, '') || COALESCE(SUBSTR(v_cyear, 3, 2), '')), '') || COALESCE(v_dptcde, '')), '') || COALESCE(LTRIM(RTRIM(v_prodno)), '')), '') || COALESCE(sztemp, ''));

            END IF;

                --IF v_cflag <> -1 THEN

                --    LEAVE LOOP_LABEL;

                --END IF;

        --END LOOP LOOP_LABEL;

        --SET icflag = v_cflag;

    END;

END;

 

你可能感兴趣的:(db2)