[转帖]oracle 写exel 文件 存储过程_MySQL, Oracle及数据库讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  MySQL, Oracle及数据库讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 4205 | 回复: 0   主题: [转帖]oracle 写exel 文件 存储过程        下一篇 
derek
注册用户
等级:中校
经验:1550
发帖:209
精华:0
注册:2011-7-21
状态:离线
发送短消息息给derek 加好友    发送短消息息给derek 发消息
发表于: IP:您无权察看 2011-9-2 14:56:08 | [全部帖] [楼主帖] 楼主

业务要求:

     1. 业务要求每天早晨08:00导出存款,贷款等数据信息

     2. 使用的数据需要上一日EOD 日终批处理的数据

     3. 数据以exel 文件呈现

    实现过程中的主要问题:

1. 写exel 文件

     写exel 的实现 使用oracle utl_file 实现, 写入数据的时候,exel 列与列要使用“,”号分隔

UTL_FILE.PUT_LINE(v_Handle,dp_record.v_SETDT||',' dp_record.v_BRCD );


 这其中遇到的问题主要有2个:

     1. 数据字段中含有",",  这样写入的数据就会列发生错乱, 由于这边含有逗号的字段主要是名字,故我仅仅是用空格把逗号去掉,没有进一步的研究

     2. 中文乱码

UTL_FILE.PUT_LINE(vHandle,convert(vOutput3, 'ZHS16GBK'));


         中文乱码可以使用上面的方法转换

    下面是存储过程脚本:

create or replace directory  UTL_DIR_TEST as 'C:\oracle\product\10.2.0\utl_dir';
grant read,write on directory UTL_DIR_TEST  to  scott;
drop procedure RT_daily_exel;
create or replace procedure RT_daily_exel( i_date char )
as
type deposit_record_type is record
(
v_SETDT     rc1.TBRC_CASHFLOW.SETDT%type,
v_BRCD      rc1.TBRC_CASHFLOW.BRCD%type,
v_ENGBRNM   cs1.TBCS_BRCD.ENGBRNM%type,
v_DECODE      RACE.T_CODE.DECODE%type,
v_CUSTNUM    varchar2(11),
v_NM       cm1.TBCM_GENERAL.nm%type,
v_OVSAC    rc1.TBRC_CASHFLOW.OVSAC%type,
v_ACCTNO    rc1.TBRC_CASHFLOW.ACCTNO%type,
v_ACNMLF    gl1.TBGL_CACODB.ACNMLF%type,
v_ACNMEF    gl1.TBGL_CACODB.ACNMEF%type,
v_OPNDT    rc1.TBRC_CASHFLOW.OPNDT%type,
v_MATDT     rc1.TBRC_CASHFLOW.MATDT%type,
v_CCYCD    rc1.TBRC_CASHFLOW.CCYCD%type,
v_BAL       rc1.TBRC_CASHFLOW.BAL%type,
v_USDAMT    varchar2(22),
v_CUSTDTLTPCD cm1.TBCM_GENERAL.CUSTDTLTPCD%type
);
dp_record deposit_record_type;
v_Handle UTL_FILE.FILE_TYPE;
v_date char(8) := '99991231';
v_Dirname varchar2(200);
v_Filename_DP varchar2(200);
CURSOR cur_dp(v_date char default '99991231') is
SELECT A.SETDT
,A.BRCD
,B.ENGBRNM
,T1.DECODE
,A.BRCD||A.CUSTSEQ
,trim(replace(C.NM, ',' ,' ')) as NM
,A.OVSAC
,A.ACCTNO
,trim(D.ACNMLF) as ACNMLF
,D.ACNMEF
,A.OPNDT
,A.MATDT
,A.CCYCD
,A.BAL
,to_char(NVL(ROUND(CASE WHEN E.ROUNDFAC = 'R' THEN ROUND(TRUNC((A.BAL * E.BR_HQ_BSRT),8),E.SUBUNIT)
WHEN E.ROUNDFAC = 'D' THEN TRUNC(TRUNC((A.BAL * E.BR_HQ_BSRT),8),E.SUBUNIT)
WHEN E.ROUNDFAC = 'U' THEN CEIL (TRUNC((A.BAL * E.BR_HQ_BSRT),8) * POWER(10,E.SUBUNIT)) / POWER(10,E.SUBUNIT)
ELSE 0
END * (E.USDNVT / E.QUOTEUNIT),3),0)) AS USDAMT
,C.CUSTDTLTPCD
FROM TBRC_CASHFLOW A
,TBCS_BRCD     B
,TBCM_GENERAL  C
,TBGL_CACODB   D
,TBRC_BREXRT   E
,(  SELECT *
FROM T_CODE
WHERE CAT_NAME LIKE '%CMCUSTTPCD%'
AND COUNTRY = 'CN'
) T1
WHERE A.CNTRY    = 'CN'
AND A.BRCD     = B.BRCD
AND A.BRCD     = C.BRCD
AND A.BRCD     = D.BRCD
AND A.SETDT    = v_date
AND A.CUSTSEQ  = C.CUSTSEQ
AND C.CUSTTPCD = T1.CODE
AND A.ACCTCD   = D.ACCTCD
AND A.BUSCD    = 'DP'
AND E.BRCD     = A.BRCD
AND E.NOTDT    = A.SETDT
AND E.CCYCD    = A.CCYCD
AND E.ONCCY    = 'CNY'
AND E.CNTRY    = 'CN'
AND E.EXCCY    = 'USD'
AND A.OVSAC BETWEEN '31201000' AND '32000000'
--     AND A.OVSAC <> '31701100'
AND C.CUSTDTLTPCD NOT IN  ( '401','402','403','404','405'  );
BEGIN
IF i_date = '99991231' THEN
select curbusday into v_date from cs1.tbcs_brcd where brcd = '5921';
ELSE
v_date := i_date;
END IF;
v_Dirname := ‘UTL_DIR_TEST’; --目录名字大写
v_Filename_DP := v_date||'DEPOSIT.CSV';
v_Handle := UTL_FILE.FOPEN(v_Dirname,v_Filename_DP,'w');
OPEN cur_dp(v_date => v_date);
LOOP
FETCH cur_dp INTO
dp_record.v_SETDT
,dp_record.v_BRCD
,dp_record.v_ENGBRNM
,dp_record.v_DECODE
,dp_record.v_CUSTNUM
,dp_record.v_NM
,dp_record.v_OVSAC
,dp_record.v_ACCTNO
,dp_record.v_ACNMLF
,dp_record.v_ACNMEF
,dp_record.v_OPNDT
,dp_record.v_MATDT
,dp_record.v_CCYCD
,dp_record.v_BAL
,dp_record.v_USDAMT
,dp_record.v_CUSTDTLTPCD ;
EXIT WHEN cur_dp%NOTFOUND;
UTL_FILE.PUT_LINE(v_Handle,
convert(dp_record.v_SETDT       ||','
||dp_record.v_BRCD        ||','
||dp_record.v_ENGBRNM     ||','
||dp_record.v_DECODE      ||','
||dp_record.v_CUSTNUM     ||','
||dp_record.v_NM          ||','
||dp_record.v_OVSAC       ||','
||dp_record.v_ACCTNO      ||','
||dp_record.v_ACNMLF      ||','
||dp_record.v_ACNMEF      ||','
||dp_record.v_OPNDT       ||','
||dp_record.v_MATDT       ||','
||dp_record.v_CCYCD       ||','
||dp_record.v_BAL         ||','
||dp_record.v_USDAMT      ||','
||dp_record.v_CUSTDTLTPCD, 'ZHS16GBK') );          --- 转换字符格式
END LOOP;
CLOSE cur_dp;
utl_file.fflush(v_Handle);
UTL_FILE.FCLOSE(v_Handle);
EXCEPTION
WHEN OTHERS THEN
IF UTL_FILE.is_open(v_Handle) then
utl_file.fclose(v_Handle);
END IF;
END RT_daily_exel;


二:

添加执行计划,

三, 添加分发脚本

完整版存储过程:

create or replace procedure RT_daily_exel( i_date char )
as
type deposit_record_type is record
(
v_SETDT     rc1.TBRC_CASHFLOW.SETDT%type,
v_BRCD      rc1.TBRC_CASHFLOW.BRCD%type,
v_ENGBRNM   cs1.TBCS_BRCD.ENGBRNM%type,
v_DECODE      RACE.T_CODE.DECODE%type,
v_CUSTNUM    varchar2(11),
v_NM       cm1.TBCM_GENERAL.nm%type,
v_OVSAC    rc1.TBRC_CASHFLOW.OVSAC%type,
v_ACCTNO    rc1.TBRC_CASHFLOW.ACCTNO%type,
v_ACNMLF    gl1.TBGL_CACODB.ACNMLF%type,
v_ACNMEF    gl1.TBGL_CACODB.ACNMEF%type,
v_OPNDT    rc1.TBRC_CASHFLOW.OPNDT%type,
v_MATDT     rc1.TBRC_CASHFLOW.MATDT%type,
v_CCYCD    rc1.TBRC_CASHFLOW.CCYCD%type,
v_BAL       rc1.TBRC_CASHFLOW.BAL%type,
v_USDAMT    varchar2(22),
v_CUSTDTLTPCD cm1.TBCM_GENERAL.CUSTDTLTPCD%type
);
type loan_record_type is record
(
v_SETDT     rc1.TBRC_CASHFLOW.SETDT%type,
v_BRCD      rc1.TBRC_CASHFLOW.BRCD%type,
v_ENGBRNM   cs1.TBCS_BRCD.ENGBRNM%type,
v_DECODE      RACE.T_CODE.DECODE%type,
v_CUSTNUM    varchar2(11),
v_NM       cm1.TBCM_GENERAL.nm%type,
v_OVSAC    rc1.TBRC_CASHFLOW.OVSAC%type,
v_ACCTNO    rc1.TBRC_CASHFLOW.ACCTNO%type,
v_ACNMLF    gl1.TBGL_CACODB.ACNMLF%type,
v_ACNMEF    gl1.TBGL_CACODB.ACNMEF%type,
v_OPNDT    rc1.TBRC_CASHFLOW.OPNDT%type,
v_MATDT     rc1.TBRC_CASHFLOW.MATDT%type,
v_CCYCD    rc1.TBRC_CASHFLOW.CCYCD%type,
v_BAL       rc1.TBRC_CASHFLOW.BAL%type,
v_USDAMT    varchar2(22),
v_CUSTDTLTPCD cm1.TBCM_GENERAL.CUSTDTLTPCD%type
);
type loanapp_record_type is record
(
v_BRCD      LN1.TBLN_APPRH.BRCD%type,
v_BRCDLN     LN1.TBLN_APPRH.BRCDLN%type,
v_CUSTSEQLN     LN1.TBLN_APPRH.CUSTSEQLN%type,
v_CUSTNM    CM1.TBCM_GENERAL.NMLOC%type,
v_IDNONATL  CM1.TBCM_GENERAL.IDNONATL%type,
v_APPRNO    varchar2(18),
v_ACCTCODE  varchar2(10),
v_ACCTNM    varchar2(255),
v_CCYCD     LN1.TBLN_APPRH.CCYCD%type,
v_APPRAMT   LN1.TBLN_APPRH.APPRAMT%type,
v_DSBSBAL   LN1.TBLN_APPRH.DSBSBAL%type,
v_APPRDT    LN1.TBLN_APPRH.APPRDT%type,
v_MATDT     LN1.TBLN_APPRH.MATDT%type,
v_APPRAMT_USDAMT varchar2(30),
v_DSBSBAL_USDAMT varchar2(30)
);
dp_record deposit_record_type;
loan_record loan_record_type;
loanapp_record loanapp_record_type;
v_Handle UTL_FILE.FILE_TYPE;
v_ln_Handle UTL_FILE.FILE_TYPE;
v_lnapp_Handle UTL_FILE.FILE_TYPE;
v_date char(8) := '99991231';
v_Dirname varchar2(200);
v_Filename_DP varchar2(200);
v_Filename_LN varchar2(200);
v_Filename_LNAPP varchar2(200);
CURSOR cur_dp(v_date char default '99991231') is
SELECT A.SETDT
,A.BRCD
,B.ENGBRNM
,T1.DECODE
,A.BRCD||A.CUSTSEQ
,trim(replace(C.NM, ',' ,' ')) as NM
,A.OVSAC
,A.ACCTNO
,trim(D.ACNMLF) as ACNMLF
,D.ACNMEF
,A.OPNDT
,A.MATDT
,A.CCYCD
,A.BAL
,to_char(NVL(ROUND(CASE WHEN E.ROUNDFAC = 'R' THEN ROUND(TRUNC((A.BAL * E.BR_HQ_BSRT),8),E.SUBUNIT)
WHEN E.ROUNDFAC = 'D' THEN TRUNC(TRUNC((A.BAL * E.BR_HQ_BSRT),8),E.SUBUNIT)
WHEN E.ROUNDFAC = 'U' THEN CEIL (TRUNC((A.BAL * E.BR_HQ_BSRT),8) * POWER(10,E.SUBUNIT)) / POWER(10,E.SUBUNIT)
ELSE 0
END * (E.USDNVT / E.QUOTEUNIT),3),0)) AS USDAMT
,C.CUSTDTLTPCD
FROM TBRC_CASHFLOW A
,TBCS_BRCD     B
,TBCM_GENERAL  C
,TBGL_CACODB   D
,TBRC_BREXRT   E
,(  SELECT *
FROM T_CODE
WHERE CAT_NAME LIKE '%CMCUSTTPCD%'
AND COUNTRY = 'CN'
) T1
WHERE A.CNTRY    = 'CN'
AND A.BRCD     = B.BRCD
AND A.BRCD     = C.BRCD
AND A.BRCD     = D.BRCD
AND A.SETDT    = v_date
AND A.CUSTSEQ  = C.CUSTSEQ
AND C.CUSTTPCD = T1.CODE
AND A.ACCTCD   = D.ACCTCD
AND A.BUSCD    = 'DP'
AND E.BRCD     = A.BRCD
AND E.NOTDT    = A.SETDT
AND E.CCYCD    = A.CCYCD
AND E.ONCCY    = 'CNY'
AND E.CNTRY    = 'CN'
AND E.EXCCY    = 'USD'
AND A.OVSAC BETWEEN '31201000' AND '32000000'
--     AND A.OVSAC <> '31701100'
AND C.CUSTDTLTPCD NOT IN  ( '401','402','403','404','405'  );
CURSOR cur_loan(v_date char default '99991231') is
SELECT A.SETDT
,A.BRCD
,B.ENGBRNM
,T1.DECODE
,A.BRCD||A.CUSTSEQ
,trim(replace(C.NM, ',' ,' ')) as NM
,A.OVSAC
,A.ACCTNO
,trim(D.ACNMLF) as ACNMLF
,D.ACNMEF
,A.OPNDT
,A.MATDT
,A.CCYCD
,A.BAL
,NVL(ROUND(CASE WHEN E.ROUNDFAC = 'R' THEN ROUND(TRUNC((A.BAL * E.BR_HQ_BSRT),8),E.SUBUNIT)
WHEN E.ROUNDFAC = 'D' THEN TRUNC(TRUNC((A.BAL * E.BR_HQ_BSRT),8),E.SUBUNIT)
WHEN E.ROUNDFAC = 'U' THEN CEIL (TRUNC((A.BAL * E.BR_HQ_BSRT),8) * POWER(10,E.SUBUNIT)) / POWER(10,E.SUBUNIT)
ELSE 0
END * (E.USDNVT / E.QUOTEUNIT), 3
), 0) AS USDAMT
,C.CUSTDTLTPCD
FROM TBRC_CASHFLOW A
,TBCS_BRCD     B
,TBCM_GENERAL  C
,TBGL_CACODB   D
,TBRC_BREXRT   E
,(  SELECT *
FROM T_CODE
WHERE CAT_NAME LIKE '%CMCUSTTPCD%'
AND COUNTRY = 'CN'
) T1
WHERE A.CNTRY    = 'CN'
AND A.BRCD     = B.BRCD
AND A.BRCD     = C.BRCD
AND A.BRCD     = D.BRCD
AND A.SETDT    = v_date
AND A.CUSTSEQ  = C.CUSTSEQ
AND C.CUSTTPCD = T1.CODE
AND A.ACCTCD   = D.ACCTCD
AND E.BRCD     = A.BRCD
AND E.NOTDT    = A.SETDT
AND E.CCYCD    = A.CCYCD
AND E.ONCCY    = 'CNY'
AND E.CNTRY    = 'CN'
AND E.EXCCY    = 'USD'
AND A.OVSAC BETWEEN '24100001' AND '25506000'
AND A.OVSAC NOT IN  ( '24851000'  );
CURSOR cur_loanapp(v_date char default '99991231') is
select K.BRCD , K.BRCDLN ,K.CUSTSEQLN,  K.CUSTNM  , K.IDNONATL , K.APPRNO , K.ACCTCODE , K.ACCTNM , K.CCYCD , K.APPRAMT , K.DSBSBAL , K.APPRDT , K.MATDT ,K.APPRAMT_USDAMT, K.DSBSBAL_USDAMT
from
(SELECT A.BRCD,
A.BRCDLN,
A.CUSTSEQLN,
trim(replace(B.NMLOC, ',' ,' ')) as CUSTNM ,
B.IDNONATL ,
A.BRCD||'-'||A.APPRID||'-'||A.APPRSEQ APPRNO,
DECODE(A.LNACCTTPCD, '02', A.FACLCD, DECODE(NVL(D.DRAC1, '999999'), '999999', A.LNTPCD  , D.DRAC1 )) ACCTCODE
,DECODE(A.LNACCTTPCD, '02', C.DECODE, DECODE(NVL(D.DRAC1, '999999'), '999999', E.LNSBTPNM, F.ACNMES)) ACCTNM
,A.CCYCD
,A.APPRAMT
,NVL(A.DSBSBAL, '-1') DSBSBAL
,A.APPRDT
,A.MATDT
,to_char(NVL(ROUND(CASE WHEN G.ROUNDFAC = 'R' THEN ROUND(TRUNC((A.APPRAMT * G.BR_HQ_BSRT), 8), G.SUBUNIT)
WHEN G.ROUNDFAC = 'D' THEN TRUNC(TRUNC((A.APPRAMT * G.BR_HQ_BSRT), 8), G.SUBUNIT)
WHEN G.ROUNDFAC = 'U' THEN CEIL (TRUNC((A.APPRAMT * G.BR_HQ_BSRT), 8) * POWER(10, G.SUBUNIT)) / POWER(10, G.SUBUNIT) ELSE 0 END * (G.USDNVT / G.QUOTEUNIT), 3), 0)) AS APPRAMT_USDAMT
,to_char(NVL(ROUND(CASE WHEN G.ROUNDFAC = 'R' THEN ROUND(TRUNC((A.DSBSBAL * G.BR_HQ_BSRT), 8), G.SUBUNIT)
WHEN G.ROUNDFAC = 'D' THEN TRUNC(TRUNC((A.DSBSBAL * G.BR_HQ_BSRT), 8), G.SUBUNIT) WHEN G.ROUNDFAC = 'U' THEN CEIL (TRUNC((A.DSBSBAL * G.BR_HQ_BSRT), 8) * POWER(10, G.SUBUNIT)) / POWER(10, G.SUBUNIT) ELSE 0
END * (G.USDNVT / G.QUOTEUNIT), 3), 0)) AS DSBSBAL_USDAMT
FROM TBLN_APPRH   A,TBCM_GENERAL B ,T_CODE       C ,TBGL_ACKEYDD D,TBLN_LNACCT  E,TBGL_CACODB  F,TBRC_BREXRT  G
WHERE A.BTDT  = v_date
AND A.STSCD = '01'
AND A.BRCDLN = B.BRCD (+)
AND A.CUSTSEQLN = B.CUSTSEQ(+)
AND A.FACLCD      = C.CODE(+)
AND C.CAT_NAME(+) = 'LNFACLCD'
AND C.COUNTRY (+) = 'CC'
AND A.BRCD = D.BRCD (+)
AND A.LNTPCD   = D.TRREF(+)
AND D.SUBTP  (+) = '01'
AND D.EVENTTP(+) = 'DS'
AND A.BRCD  = E.BRCD (+)
AND A.LNTPCD = E.LNTPCD(+)
AND E.LNSBTPCD(+) = '00'
AND D.BRCD  = F.BRCD  (+)
AND D.DRAC1 = F.ACCTCD(+)
AND G.BRCD (+) = A.BRCD
AND G.NOTDT(+) = A.BTDT
AND G.CCYCD(+) = A.CCYCD
AND G.ONCCY(+) = 'CNY'
AND G.CNTRY(+) = 'KR'
AND G.EXCCY(+) = 'USD' ) K
WHERE K.ACCTCODE <> '751'
and K.ACCTCODE <> '753'
and K.ACCTCODE <> '710'
and K.ACCTCODE <> '466'
ORDER BY K.BRCDLN ,K.CUSTSEQLN ,K.BRCD ,K.APPRNO;
BEGIN
IF i_date = '99991231' THEN
select curbusday into v_date from cs1.tbcs_brcd where brcd = '5921';
ELSE
v_date := i_date;
END IF;
v_Dirname := 'UTL_DIR_RT'; --目录名字大写
v_Filename_DP := v_date||'_DEPOSIT.csv';
v_Filename_LN := v_date||'_LOAN.csv';
v_Filename_LNAPP := v_date||'_LOAN_APPROVAL.csv';
v_Handle := UTL_FILE.FOPEN(v_Dirname,v_Filename_DP,'w');
v_ln_Handle := UTL_FILE.FOPEN(v_Dirname,v_Filename_LN,'w');
v_lnapp_Handle := UTL_FILE.FOPEN(v_Dirname,v_Filename_LNAPP,'w');
OPEN cur_dp(v_date => v_date);
LOOP
FETCH cur_dp INTO
dp_record.v_SETDT
,dp_record.v_BRCD
,dp_record.v_ENGBRNM
,dp_record.v_DECODE
,dp_record.v_CUSTNUM
,dp_record.v_NM
,dp_record.v_OVSAC
,dp_record.v_ACCTNO
,dp_record.v_ACNMLF
,dp_record.v_ACNMEF
,dp_record.v_OPNDT
,dp_record.v_MATDT
,dp_record.v_CCYCD
,dp_record.v_BAL
,dp_record.v_USDAMT
,dp_record.v_CUSTDTLTPCD ;
EXIT WHEN cur_dp%NOTFOUND;
UTL_FILE.PUT_LINE(v_Handle,
convert(dp_record.v_SETDT       ||','
||dp_record.v_BRCD        ||','
||dp_record.v_ENGBRNM     ||','
||dp_record.v_DECODE      ||','
||dp_record.v_CUSTNUM     ||','
||dp_record.v_NM          ||','
||dp_record.v_OVSAC       ||','
||dp_record.v_ACCTNO      ||','
||dp_record.v_ACNMLF      ||','
||dp_record.v_ACNMEF      ||','
||dp_record.v_OPNDT       ||','
||dp_record.v_MATDT       ||','
||dp_record.v_CCYCD       ||','
||dp_record.v_BAL         ||','
||dp_record.v_USDAMT      ||','
||dp_record.v_CUSTDTLTPCD, 'ZHS16GBK') );
END LOOP;
CLOSE cur_dp;
OPEN cur_loan(v_date => v_date);
LOOP
FETCH cur_loan INTO
loan_record.v_SETDT
,loan_record.v_BRCD
,loan_record.v_ENGBRNM
,loan_record.v_DECODE
,loan_record.v_CUSTNUM
,loan_record.v_NM
,loan_record.v_OVSAC
,loan_record.v_ACCTNO
,loan_record.v_ACNMLF
,loan_record.v_ACNMEF
,loan_record.v_OPNDT
,loan_record.v_MATDT
,loan_record.v_CCYCD
,loan_record.v_BAL
,loan_record.v_USDAMT
,loan_record.v_CUSTDTLTPCD ;
EXIT WHEN cur_loan%NOTFOUND;
UTL_FILE.PUT_LINE(v_ln_Handle,
convert(loan_record.v_SETDT       ||','
||loan_record.v_BRCD        ||','
||loan_record.v_ENGBRNM     ||','
||loan_record.v_DECODE      ||','
||loan_record.v_CUSTNUM     ||','
||loan_record.v_NM          ||','
||loan_record.v_OVSAC       ||','
||loan_record.v_ACCTNO      ||','
||loan_record.v_ACNMLF      ||','
||loan_record.v_ACNMEF      ||','
||loan_record.v_OPNDT       ||','
||loan_record.v_MATDT       ||','
||loan_record.v_CCYCD       ||','
||loan_record.v_BAL         ||','
||loan_record.v_USDAMT      ||','
||loan_record.v_CUSTDTLTPCD, 'ZHS16GBK') );
END LOOP;
CLOSE cur_loan;
OPEN cur_loanapp(v_date => v_date);
LOOP
FETCH cur_loanapp INTO
loanapp_record.v_BRCD
,loanapp_record.v_BRCDLN
,loanapp_record.v_CUSTSEQLN
,loanapp_record.v_CUSTNM
,loanapp_record.v_IDNONATL
,loanapp_record.v_APPRNO
,loanapp_record.v_ACCTCODE
,loanapp_record.v_ACCTNM
,loanapp_record.v_CCYCD
,loanapp_record.v_APPRAMT
,loanapp_record.v_DSBSBAL
,loanapp_record.v_APPRDT
,loanapp_record.v_MATDT
,loanapp_record.v_APPRAMT_USDAMT
,loanapp_record.v_DSBSBAL_USDAMT ;
EXIT WHEN cur_loanapp%NOTFOUND;
UTL_FILE.PUT_LINE(v_lnapp_Handle,
convert(loanapp_record.v_BRCD       ||','
||loanapp_record.v_BRCDLN||'-'||loanapp_record.v_CUSTSEQLN        ||','
||loanapp_record.v_CUSTNM     ||','
||loanapp_record.v_IDNONATL      ||','
||loanapp_record.v_APPRNO    ||','
||loanapp_record.v_ACCTCODE          ||','
||loanapp_record.v_ACCTNM       ||','
||loanapp_record.v_CCYCD      ||','
||loanapp_record.v_APPRAMT      ||','
||loanapp_record.v_DSBSBAL      ||','
||loanapp_record.v_APPRDT       ||','
||loanapp_record.v_MATDT       ||','
||loanapp_record.v_APPRAMT_USDAMT       ||','
||loanapp_record.v_DSBSBAL_USDAMT , 'ZHS16GBK') );
END LOOP;
CLOSE cur_loanapp;
utl_file.fflush(v_Handle);
UTL_FILE.FCLOSE(v_Handle);
utl_file.fflush(v_ln_Handle);
UTL_FILE.FCLOSE(v_ln_Handle);
utl_file.fflush(v_lnapp_Handle);
UTL_FILE.FCLOSE(v_lnapp_Handle);
EXCEPTION
WHEN OTHERS THEN
dbms_output.put_line(' EXCEPTION Happen ');
IF UTL_FILE.is_open(v_Handle) then
utl_file.fclose(v_Handle);
END IF;
IF UTL_FILE.is_open(v_ln_Handle) then
utl_file.fclose(v_ln_Handle);
END IF;
IF UTL_FILE.is_open(v_lnapp_Handle) then
utl_file.fclose(v_lnapp_Handle);
END IF;
END RT_daily_exel;




赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论