`
jsamson
  • 浏览: 117793 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

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数据库用户手册

    - **写UDF的例子**:用户定义函数(UDF)允许开发者编写自定义函数来扩展DB2的功能。 - **创建含IDENTITY值(即自动生成的ID)的表**:使用`IDENTITY`关键字创建自增列。 - **预防字段空值的处理**:可以在表定义时使用`...

    图书馆管理系统(DB2)

    在图书馆管理系统中,DB2是数据存储的核心,负责管理和维护所有图书、读者以及借阅记录等相关数据。DB2 9.5版本引入了许多增强功能,如SQL优化、数据压缩、高速缓存管理等,为图书馆管理系统的高效运行提供了坚实的...

    一个用VB6编写的,最简单的库存软件

    这个简单的库存软件可能包含基础的库存记录和查询功能,帮助小型企业或个人进行库存控制。 【数据库】在库存软件中起着核心作用,用于存储所有库存相关的数据。文件“db2.mdb”很可能是一个Access数据库文件,...

    DB2存储过程

    #### 一、DB2存储过程编写规范概述 DB2存储过程是一种在数据库中预编译并存储的过程,它可以接受输入参数、返回单个或多个结果集,以及返回状态值。编写良好的DB2存储过程能够提高数据库性能、简化应用逻辑,并增强...

    JAVA-DB2图书管理系统设计思路

    2. **编写数据库连接代码**:使用Java的JDBC API来建立与DB2数据库的连接。以下是一个简单的示例代码: ```java package com.tqj.dboperation; import java.sql.Connection; import java.sql.DriverManager; ...

    数据库db2课程设计大纲

    1. 学生需要按照指定课题进行详细设计,包括系统需求分析、数据逻辑结构设计、创建数据库和表、软件结构设计、程序模块设计与调试,以及编写软件使用说明书。 2. 需求分析需包含数据流图、数据词典和功能分析,每个...

    本科毕业设计+基于SpringBoot+Vue构建的中小企业进销存管理系统

    支持 MySQL、MariaDB、Oracle、DB2、H2、HSQL、SQLite、Postgre、SQLServer2005、SQLServer 等多种数据库 实现前后端分离,通过token进行数据交互,前端再也不用关注后端技术 支持结合ELK实时日志分析系统,方便日志...

    PB数据库经典案例

    进销存系统通常包括进货管理、销售管理、库存管理三大模块,涉及采购订单、销售订单、库存记录、商品信息等多个关键数据表。在这个案例中,我们将学习如何使用PowerBuilder创建数据窗口来显示、编辑和过滤这些数据,...

    图书管理系统数据库设计.doc

    在IBM DB2平台上使用SQL语言来编写和实现这个系统,使得我们可以高效地处理图书馆中的书籍信息、学生信息以及借阅记录。系统功能分为学生界面和管理员界面,学生可以进行借书、续借、还书和查询书籍等操作,而管理员...

    我毕业时做得商场销售系统vb6.0+access

    2. "db1.mdb" 和 "db2.mdb":这两个是Access数据库文件,可能分别代表了不同的数据表,比如一个用于存储商品信息,另一个用于记录销售数据或客户信息。 3. "readme.txt":通常包含有关软件的说明、使用指南或者...

    程序员的SQL金典(杨中科)

    - **跨平台支持**:考虑到不同的开发环境需求,本书不仅讲解了通用的SQL规则,还特别关注了在MySQL、MSSQLServer、Oracle和DB2中的差异,使读者能够在多种环境中自如地编写SQL代码。 - **注重实践**:除了理论知识,...

    oracle详解

    常见的RDBMS包括Oracle、Microsoft SQL Server、DB2、Sybase、Informix、MySQL等。 #### 二、Oracle简介 - **Oracle公司**:Oracle公司是一家全球领先的企业级软件供应商,以其数据库管理系统而闻名。成立于1977年...

    php网络开发完全手册

    13.3.4 DB2 207 13.3.5 SQL Server 207 13.4 SQL语言简介 207 13.5 常见的数据库设计问题 208 13.6 关系型数据库的设计原则 209 13.6.1 第一范式(1NF) 209 13.6.2 第二范式(2NF) 209 13.6.3 第三范式(3NF) 210...

    SAP MM 认证教材

    由于教材主要以英文编写,因此良好的英语基础对于理解教材内容至关重要。 #### 二、教材版权与使用注意事项 1. **版权信息**:教材受SAP AG版权所有,任何未经明确授权的部分复制或传播行为均被禁止。 2. **软件...

    webservice

    取值范围为0(不核销,暂存)、1(核销,暂存)、2(不核销,提交)、3(核销,提交)。 - 参数3:`isImpCashflow`,用于指定是否引入现金流量,取值范围为0(不引入)、1(引入)。 3. **返回值** - 接口返回一...

    数据库课程设计-电脑销售系统

    - **编写需求规格说明书**:整理上述分析成果,形成需求规格说明书,作为后续设计工作的依据。 #### 三、概念结构设计 **3.1 概念结构设计的方法与步骤** 概念结构设计通常采用自顶向下或自底向上的方法来进行,...

    [原创]Informatica PowerExchange V8.6.1 HF9 for AS400 安装和使用手册(杨晓东2009-12-23)

    - 可以通过编写脚本或使用图形界面工具完成此操作。 20. **Windows平台上安装PWX**:除了在AS400上安装外,还需要在Windows平台进行安装。 - 下载并运行安装程序。 - 按照提示完成安装流程。 21. **配置dbmover...

    基于IBM AS400系统不同的银行底层接口系统的兼容设计及实现

    4. **DB2数据库的应用**:利用IBM AS/400系统内置的DB2数据库进行数据管理和存储,可以提高数据处理的速度和安全性。 5. **RPG语言的应用**:充分发挥RPG语言在商业逻辑处理方面的优势,编写高效稳定的程序代码。 ...

Global site tag (gtag.js) - Google Analytics