您的位置:首页 > 数据库

动态 sql语句与动态 游标

2013-06-21 14:38 344 查看
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) ||

                      replac
bbc2
e(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;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: