动态 sql语句与动态 游标

create or replace procedure out_excel_cjr(dir      in varchar2,
                                          filename in varchar2,
                                          strwhere  in varchar2) as
  type gsm_rec is record(
    XH          varchar2(4000),
    F_XM        varchar2(4000),
    F_XB        varchar2(4000),
    F_MZ        varchar2(4000),
    F_CSRQ      varchar2(4000),
    F_HKXZ      varchar2(4000),
    F_ZZMM      varchar2(4000),
    F_HYZK      varchar2(4000),
    F_WHCD      varchar2(4000),
    F_HH        varchar2(4000),
    F_HH1       varchar2(4000),
    F_SFLX      varchar2(4000),
    F_HKD_Z     varchar2(4000),
    F_HKD_C     varchar2(4000),
    F_HKD_JWH   varchar2(4000),
    F_CJZH      varchar2(4000),
    F_SFZH      varchar2(4000),
    F_CJDJ      varchar2(4000),
    F_CJLB      varchar2(4000),
    F_DCCJLB    varchar2(4000),
    F_JHR       varchar2(4000),
    F_YJHRGX    varchar2(4000),
    F_JHRDH     varchar2(4000),
    F_JHRSFZH   varchar2(4000),
    F_LXDH      varchar2(4000),
    F_SFDBTK    varchar2(4000),
    F_DBTKZH    varchar2(4000),
    F_DBTKJE    varchar2(4000),
    F_LDNL      varchar2(4000),
    F_SFLB      varchar2(4000),
    F_SFLBVALUE varchar2(4000),
    F_XJZDZ     varchar2(4000),
    F_JTCZRK    varchar2(4000),
    F_GRNSR     varchar2(4000),
    F_JTNSH     varchar2(4000),
    F_BHCJRKS   varchar2(4000),
    F_BHDC      varchar2(4000),
    F_ZFJZMJ    varchar2(4000),
    F_ZFSYMJ    varchar2(4000),
    F_ZFXZ      varchar2(4000),
    F_ZFLY      varchar2(4000),
    F_ZFLX      varchar2(4000),
    F_ZFJG      varchar2(4000),
    F_XSSHBX    varchar2(4000),
    F_SFJJFW    varchar2(4000),
    F_HZ        varchar2(4000),
    F_ZT        varchar2(4000));


  sql1 varchar2(4000);
  file UTL_FILE.file_type;
  TYPE cur_type IS ref CURSOR;
  empc    cur_type;
  emp_rec gsm_rec;


begin
  sql1 := 'select ' || '''''' || ' as XH,
           F_XM,
           F_XB,
           F_MZ,
           ' || '''''''''' || '||' || 'to_char(F_CSRQ, ' || '''' ||
          'yyyy-MM-dd' || '''' || ') as F_CSRQ,
           F_HKXZ,
           F_ZZMM,
           F_HYZK,
           F_WHCD,
           F_HH,
           ' || '''''''''' || '||' || 'F_HH1 as F_HH1,
           F_SFLX,
           F_HKD_Z,
           F_HKD_C,
           F_HKD_JWH,
           ' || '''''''''' || '||' || ' F_CJZH as F_CJZH,
           ' || '''''''''' || '||' || ' F_SFZH as F_SFZH,
           F_CJDJ,
           F_CJLB,
           F_DCCJLB,
           F_JHR,
           F_YJHRGX,
           ' || '''''''''' || '||' || 'F_JHRDH as F_JHRDH,
           ' || '''''''''' || '||' || ' F_JHRSFZH AS F_JHRSFZH,
           ' || '''''''''' || '||' || ' F_LXDH AS F_LXDH,
           F_SFDBTK,
           ' || '''''''''' || '||' || 'F_DBTKZH as F_DBTKZH,
           ' || '''''''''' || '||' || 'F_DBTKJE as F_DBTKJE,
           F_LDNL,
           F_SFLB,
           F_SFLBVALUE,
           F_XJZDZ,
           F_JTCZRK,
           ' || '''''''''' || '||' || 'F_GRNSR AS F_GRNSR,
           ' || '''''''''' || '||' || ' F_JTNSH AS F_JTNSH,
           F_BHCJRKS,
           F_BHDC,
           F_ZFJZMJ,
           F_ZFSYMJ,
           F_ZFXZ,
           F_ZFLY,
           F_ZFLX,
           F_ZFJG,
           F_XSSHBX,
           F_SFJJFW,
           F_HZ,
           F_ZT
      from tbl_cjr
     where '||strwhere||'  order by to_number(sys_id)';
  file := UTL_FILE.fopen(dir, filename, 'w');
  --utl_file.put_line(file, 'report: generated on ' || sysdate);
  --utl_file.new_line(file);
  utl_file.put_line(file,
                    '序号' || chr(9) || '姓名' || chr(9) || '性别' || chr(9) || '民族' ||
                    chr(9) || '出生日期' || chr(9) || '户口性质' || chr(9) ||
                    '政治面貌' || chr(9) || '婚姻状况' || chr(9) || '文化程度' ||
                    chr(9) || '户号' || chr(9) || '户号1' || chr(9) || '身份类型' ||
                    chr(9) || '户口地镇' || chr(9) || '户口地村' || chr(9) ||
                    '户口地居委会' || chr(9) || '残疾证号' || chr(9) || '身份证号' ||
                    chr(9) || '残疾等级' || chr(9) || '残疾类别' || chr(9) ||
                    '实际残疾类别' || chr(9) || '监护人' || chr(9) || '与监护人关系' ||
                    chr(9) || '监护人电话' || chr(9) || '监护人身份证号' || chr(9) ||
                    '联系电话' || chr(9) || '是否享受低保特困' || chr(9) || '低保特困证号' ||
                    chr(9) || '低保特困证金额' || chr(9) || '劳动能力' || chr(9) ||
                    '身份类别' || chr(9) || '身份类别输入值' || chr(9) || '现居住地址' ||
                    chr(9) || '家庭常住人口' || chr(9) || '个人年收入' || chr(9) ||
                    '家庭年收入' || chr(9) || '本户残疾人口数' || chr(9) || '本户残疾人口状态' ||
                    chr(9) || '住房建筑面积' || chr(9) || '住房使用面积' || chr(9) ||
                    '住房性质' || chr(9) || '住房来源' || chr(9) || '住房类型' ||
                    chr(9) || '住房结构' || chr(9) || '享受社会保险' || chr(9) ||
                    '是否享受家居服务' || chr(9) || '是否户主' || chr(9) || '状态');
  OPEN empc FOR sql1;
  loop
    fetch empc
      into emp_rec;
    exit when empc%notfound;
    UTL_FILE.PUT_LINE(file,
                      empc%ROWCOUNT || chr(9) || emp_rec.F_XM || chr(9) ||
                      replace(emp_rec.F_XB, '--请选择--', '') || chr(9) ||
                      replace(emp_rec.F_MZ, '--请选择--', '') || chr(9) ||
                      emp_rec.F_CSRQ || chr(9) ||
                      replace(emp_rec.F_HKXZ, '--请选择--', '') || chr(9) ||
                      replace(emp_rec.F_ZZMM, '--请选择--', '') || chr(9) ||
                      replace(emp_rec.F_HYZK, '--请选择--', '') || chr(9) ||
                      replace(emp_rec.F_WHCD, '--请选择--', '') || chr(9) ||
                      emp_rec.F_HH || chr(9) || emp_rec.F_HH1 || chr(9) ||
                      replace(emp_rec.F_SFLX, '--请选择--', '') || chr(9) ||
                      replace(emp_rec.F_HKD_Z, '--请选择--', '') || chr(9) ||
                      replace(emp_rec.F_HKD_C, '--请选择--', '') || chr(9) ||
                      replace(emp_rec.F_HKD_JWH, '--请选择--', '') || chr(9) ||
                      emp_rec.F_CJZH || chr(9) || emp_rec.F_SFZH || chr(9) ||
                      replace(emp_rec.F_CJDJ, '--请选择--', '') || chr(9) ||
                      replace(emp_rec.F_CJLB, '--请选择--', '') || chr(9) ||
                      replace(emp_rec.F_DCCJLB, '--请选择--', '') || chr(9) ||
                      emp_rec.F_JHR || chr(9) ||
                      replace(emp_rec.F_YJHRGX, '--请选择--', '') || chr(9) ||
                      emp_rec.F_JHRDH || chr(9) || emp_rec.F_JHRSFZH ||
                      chr(9) || emp_rec.F_LXDH || chr(9) ||
                      replace(emp_rec.F_SFDBTK, '--请选择--', '') || chr(9) ||
                      emp_rec.F_DBTKZH || chr(9) || emp_rec.F_DBTKJE ||
                      chr(9) ||
                      replace(emp_rec.F_LDNL, '--请选择--', '') || chr(9) ||
                      replace(emp_rec.F_SFLB, '--请选择--', '') || chr(9) ||
                      emp_rec.F_SFLBVALUE || chr(9) || emp_rec.F_XJZDZ ||
                      chr(9) || emp_rec.F_JTCZRK || chr(9) ||
                      emp_rec.F_GRNSR || chr(9) || emp_rec.F_JTNSH ||
                      chr(9) || emp_rec.F_BHCJRKS || chr(9) ||
                      replace(emp_rec.F_BHDC, '--请选择--', '') || chr(9) ||
                      emp_rec.F_ZFJZMJ || chr(9) || emp_rec.F_ZFSYMJ ||
                      chr(9) ||
                      replace(emp_rec.F_ZFXZ, '--请选择--', '') || chr(9) ||
                      replace(emp_rec.F_ZFLY, '--请选择--', '') || chr(9) ||
                      replace(emp_rec.F_ZFLX, '--请选择--', '') || chr(9) ||
                      replace(emp_rec.F_ZFJG, '--请选择--', '') || chr(9) ||
                      replace(emp_rec.F_XSSHBX, '--请选择--', '') || chr(9) ||
                      replace(emp_rec.F_SFJJFW, '--请选择--', '') || chr(9) ||
                      replace(emp_rec.F_HZ, '--请选择--', '') || chr(9) ||
                      replace(emp_rec.F_ZT, '--请选择--', ''));
  END LOOP;
  --UTL_FILE.PUT_LINE(file, '*** END OF REPORT ***');
  UTL_FILE.FCLOSE(file);
EXCEPTION
  WHEN UTL_FILE.INVALID_FILEHANDLE THEN
    RAISE_APPLICATION_ERROR(-20001, 'Invalid File.');
  WHEN UTL_FILE.WRITE_ERROR THEN
    RAISE_APPLICATION_ERROR(-20002, 'Unable to write to file');
  when utl_file.invalid_operation then
    RAISE_APPLICATION_ERROR(-20003, 'file operate invalid');
END out_excel_cjr;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值