将表中的数据游标获取,然后更新相应的字段数据
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;